【发布时间】:2018-11-22 23:35:11
【问题描述】:
我的 csv 文件中有以下内容(包含 3 列):
141413,"\"'/x=/></script></title><x><x/","Mountain View, CA\"'/x=/></script></title><x><x/"
148443,"CLICK LINK BELOW TO ENTER^^^^^^^^^^^^^^","model\
\
xxx lipsum as it is\
\
100 sometimes unknown\
\
travel evening market\
"
当我使用以下命令在 mysql 中导入上述 csv 时,它会将反斜杠()视为新行;这是预期的行为。
LOAD DATA INFILE '1.csv' INTO TABLE users FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';
但是当我尝试使用复制命令导入 psql 时,它会将 \ 视为普通字符。
copy users from '1.csv' WITH (FORMAT csv, DELIMITER ',', ENCODING 'utf8', NULL "\N", QUOTE E'\"', ESCAPE '\');
【问题讨论】:
-
ESCAPE选项定义转义引号字符的字符,它与多行记录无关。如果正确引用了值(在 CSV 模式下),则会自动检测多行记录。需要把输入文件中的反斜杠去掉(一般情况下,反斜杠在SQL中是没有意义的)
标签: postgresql csv-import postgresql-copy