开发者

PostgreSQL csv import from a MySQL csv export?

开发者 https://www.devze.com 2023-04-05 22:31 出处:网络
Will it work? MySQL export: SELECT * INTO OUTFILE \'C:/data.csv\' FIELDS TERMINATED BY \'\\t\' OPTIONALLY ENCLOSED BY \'\"\'

Will it work?

MySQL export:

SELECT * INTO OUTFILE 'C:/data.csv'
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table;

PostgreSQL:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' CSV

There is missing columns for some reason. So I believe there is problem in delimiter. Am I correct, what can I do? I can inspect开发者_StackOverflow row with cause error below. But which characters I must look for?

ERROR:  missing data for column "Column21"
CONTEXT:  COPY table, line 88219: ...


  1. As mentioned by @knitti postgres need to know escape character: ESCAPE '\'
  2. OPTIONALLY ENCLOSED BY '"' is bad format for csv. It's better to force quoting.

Full code:

mysql 5.5.15:

SELECT *
INTO OUTFILE 'C:/data.csv'
FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table;

postgres 9.0.3:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS E'\t' NULL AS '\\N' ESCAPE E'\\' CSV


Default quote character in PostgreSQL is double-quote, but the documentation says, you can use any single one-byte-character. Try adding

ESCAPE '\\'
0

精彩评论

暂无评论...
验证码 换一张
取 消