PostgreSQL使用COPY及\copy导入CSV文件报错怎么解决
问题原因与正确导入方案
报错原因说明
- 服务端
COPY报错:PostgreSQL服务运行的系统用户默认没有访问个人用户目录下文件的权限,属于操作系统级别的权限限制,不是SQL语法问题。 \COPY报错:\copy是psql客户端专属的元命令,不是标准SQL语句,若在pgAdmin、DBeaver这类GUI工具的SQL查询窗口执行,这类窗口仅识别标准SQL,不识别psql元命令,就会触发反斜杠语法报错。
可行导入方案
方案1:继续使用服务端COPY(仅推荐熟悉系统权限配置的用户使用)
把CSV文件移动到PostgreSQL服务进程有权限读取的目录,比如Windows下先新建C:\temp目录,给Everyone用户开放读取权限,再执行语句:
COPY TA_Files FROM 'C:/temp/TA 11.19.21.csv' DELIMITER ',' CSV HEADER;
注意:Windows路径在PostgreSQL里可以直接用正斜杠/代替双反斜杠,避免转义错误。
方案2:使用客户端\copy(推荐,无需调整服务端权限)
- 打开psql命令行工具,连接到目标数据库
- 执行下面的\copy命令,路径填写完整的绝对路径:
\copy TA_Files FROM 'C:/Users/ABla47/Documents/TA 11.19.21.csv' DELIMITER ',' CSV HEADER
注意:\copy命令不需要结尾分号也可执行,路径用正斜杠避免转义问题,不要使用不完整的相对路径。
方案3:GUI工具导入(更适合非命令行用户)
如果常用pgAdmin、DBeaver这类GUI工具,直接调用工具自带的导入向导功能,选择目标表、CSV文件、指定分隔符为逗号、勾选首行是表头即可,全程可视化操作不需要写语句。
内容的提问来源于stack exchange,提问作者Alexa
相关产品推荐
相关产品推荐

