从MySQL csv导出导入PostgreSQL csv?

Fir*_*ter 6 mysql csv postgresql

它会起作用吗?

MySQL导出:

SELECT * INTO OUTFILE 'C:/data.csv'
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table;
Run Code Online (Sandbox Code Playgroud)

PostgreSQL的:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' CSV
Run Code Online (Sandbox Code Playgroud)

由于某种原因缺少列.所以我相信分隔符存在问题.我纠正了,我该怎么办?我可以检查以下原因错误的行.但我必须寻找哪些角色?

ERROR:  missing data for column "Column21"
CONTEXT:  COPY table, line 88219: ...
Run Code Online (Sandbox Code Playgroud)

Fir*_*ter 14

  1. 正如@knitti提到的postgres需要知道转义字符:ESCAPE'\'
  2. 选择性地封装'''是csv的不良格式.最好强制引用.

完整代码:

mysql 5.5.15:

SELECT *
INTO OUTFILE 'C:/data.csv'
FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table;
Run Code Online (Sandbox Code Playgroud)

postgres 9.0.3:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' ESCAPE E'\\' CSV
Run Code Online (Sandbox Code Playgroud)