通过PSQL导入含数组值的CSV时语法报错,求正确数组格式
解决PostgreSQL \copy导入数组的语法问题
1. 修正\copy命令的语法
你的\copy命令缺少FROM关键字,且建议明确指定CSV选项(匹配你导入的文件类型),正确命令如下:
\copy products FROM 'C:\Users\z\Downloads\MOCK_DATA.csv' WITH DELIMITER ',' CSV;
2. 调整CSV中的数组格式
PostgreSQL的text[]数组默认采用大括号包裹、逗号分隔元素的格式,你当前CSV里的单引号+方括号格式不符合要求,需修改为以下两种正确格式之一:
格式一:无特殊字符的数组
如果文件名不含空格、逗号等特殊字符,直接用大括号包裹元素即可:
1,"{hello.jpg, world.jpg}" 2,"{hola.jpg, mundo.jpg}"
格式二:含特殊字符的数组
如果文件名包含空格、逗号等特殊字符,需给元素加双引号(注意CSV中双引号要转义为两个双引号):
1,"{""hello test.jpg"", ""world.jpg""}" 2,"{""hola mundo.jpg"", ""foo,bar.jpg""}"
补充说明
若坚持使用方括号格式,需在导入时额外指定数组输入格式,但操作更复杂,推荐使用PostgreSQL原生的大括号数组格式,兼容性更强。
内容的提问来源于stack exchange,提问作者Dan Zuzevich
相关产品推荐
相关产品推荐

