PostgreSQL 8.4.18执行COPY命令导入CSV文件报错求助
解决PostgreSQL COPY命令读取CSV文件的错误
错误原因分析
- 警告提示的
nonstandard use of escape in a string literal是因为Windows路径中的反斜杠\在PostgreSQL字符串里被当作转义字符处理,导致实际解析后的路径丢失了分隔符(比如错误信息里的C:UsersxyzDesktop-Data8277.csv),最终触发文件找不到的错误。
解决方案
方法1:使用转义字符串语法
给路径字符串加上E前缀,同时把每个反斜杠\替换成双反斜杠\\:
COPY population from E'C:\\Users\\xyz\\Desktop\\Data8277.csv' WITH CSV HEADER;
方法2:替换路径分隔符为正斜杠
PostgreSQL在Windows环境下支持正斜杠/作为路径分隔符,直接替换即可:
COPY population from 'C:/Users/xyz/Desktop/Data8277.csv' WITH CSV HEADER;
方法3:检查文件权限
如果上述方法仍报错,需要确认PostgreSQL服务账户是否有权限读取目标文件:
- 把CSV文件复制到PostgreSQL数据目录(可通过
SHOW data_directory;命令查询),再执行COPY命令 - 或者右键CSV文件,在属性-安全中添加PostgreSQL服务运行账户(通常是
NT SERVICE\PostgreSQL或本地系统账户)的读取权限
额外提示
PostgreSQL 8.4是已停止维护的老旧版本(2014年终止支持),存在安全漏洞和兼容性问题,建议尽快升级到受支持的新版本(如12+)。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

