求助 ,pg导入CSV时 字段值里面包含逗号

yc2503yc 2012-12-15 03:12:30
求助,执行下面命令导入csv时,因为部分字段值里面有逗号和分隔符逗号冲突了,导入时报错,请问怎么 quote 和ESCAPE 怎么用才能区分出来
psql -Upostgres -dsde -c "set client_encoding = 'iso-8859-1'; copy httpsession from '/data/csv/httpsession_60_20121213_200000_20121213_200059.csv' DELIMITER ',' CSV quote as '\'' ESCAPE as '\'" ;


官方文档是这么写的,但我没明白具体意思,

每条记录的值都是用 DELIMITER 字符分隔的。 如果数值本身包含分隔字符,QUOTE 字符,NULL 字串, 一个回车,或者进行字符,那么整个数值用 QUOTE 字符前缀和后缀(包围), 并且数值里任何 QUOTE 字符或者 ESCAPE 字符都前导逃逸字符。 你也可以使用 FORCE QUOTE 在输出非 NULL 的指定字段值时强制引号包围。
...全文
715 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yc2503yc 2012-12-17
  • 打赏
  • 举报
回复
好了 ,非常感谢热心版主,原来是这个地方quote '''' escape '''' 我写成'\''了 ^-^
iihero 2012-12-16
  • 打赏
  • 举报
回复
设定内容为: 1234,'abc,fdasf',中国人 234,'fdsa,fdaf',随便的 用下述命令:
iihero=# copy t2 from 'e:/learn/db_research/postgreSQL/demo/abc.csv' delimiter ',' csv quote '''' escape '''';
COPY 2
iihero=# select * from t2;
  id  |   col2    |  col3
------+-----------+--------
 1234 | abc,fdasf | 中国人
  234 | fdsa,fdaf | 随便的
(2 rows)
yc2503yc 2012-12-15
  • 打赏
  • 举报
回复
我这个CSV里面是单引号括起来的,感觉指定单引号了也不行呢?
iihero 2012-12-15
  • 打赏
  • 举报
回复
因为部分字段值里面有逗号和分隔符逗号冲突了 >> 有逗号的值应该已经用"括起来了吧,否则是很难分开的。 如,cvs内容如下: 1234,"abc,fdasf",中国人 234,"fdsa,fdaf",随便的 iihero=# copy t2 from 'd:/temp/abc.csv' delimiter ',' csv; COPY 2 iihero=# select * from t2; id | col2 | col3 ------+-----------+-------- 1234 | abc,fdasf | 中国人 234 | fdsa,fdaf | 随便的 (2 rows) 是用可以这么用。 iihero=# copy t2 from 'd:/temp/abc.csv' delimiter ',' csv quote '"' escape '"'; COPY 2 iihero=# select * from t2; id | col2 | col3 ------+-----------+-------- 1234 | abc,fdasf | 中国人 234 | fdsa,fdaf | 随便的 1234 | abc,fdasf | 中国人 234 | fdsa,fdaf | 随便的 (4 rows)
yc2503yc 2012-12-15
  • 打赏
  • 举报
回复
并且在执行的时候会首先出来下面的警告提示:
WARNING: nonstandard use of \' in a string literal
LINE 1: ..._20121213_200059.csv' DELIMITER ',' CSV quote as '\'' ESCAP...
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
WARNING: nonstandard use of \' in a string literal
LINE 1: ..._200059.csv' DELIMITER ',' CSV quote as '\'' ESCAPE as '\''
^
yc2503yc 2012-12-15
  • 打赏
  • 举报
回复
并且在执行的时候会有以下这些警告提示:
WARNING: nonstandard use of \' in a string literal
LINE 1: ..._20121213_200059.csv' DELIMITER ',' CSV quote as '\'' ESCAP...
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
WARNING: nonstandard use of \' in a string literal
LINE 1: ..._200059.csv' DELIMITER ',' CSV quote as '\'' ESCAPE as '\''
^

972

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧