【发布时间】:2013-12-05 14:33:01
【问题描述】:
我有 CSV 文件,制表符分隔,字段没有用引号括起来,其中字段数据可以包含单引号、双引号、管道和反斜杠等字符。
示例数据可能如下所示:
1 2 "ba$aR\eR\ 18
我想使用 COPY 语句将此数据导入 Postgres。
当我尝试使用
导入它时COPY <tablename> FROM <filename> NULL AS '';
我收到错误 psql:-:1: ERROR: missing data for column,因为 Postgres 将反斜杠 + 制表符视为“转义制表符”,而不是反斜杠后跟字段分隔符。
所以我转而使用 COPY 运算符的“CSV 格式”,如下所示:
COPY <tablename> FROM <filename> WITH CSV DELIMITER E'\t' NULL AS '';
现在有一个新错误psql:-:1: ERROR: value too long for type character varying(254)
显然是因为它将字段 3 开头的双引号解释为字段换行符。
我如何指定我的数据完全不引用?
【问题讨论】:
-
为什么不发布您的解决方法作为答案?
-
感谢您的提示,完成!
标签: postgresql csv import