PostgreSQL CSV импорта из экспорта MySQL CSV? - PullRequest
6 голосов
/ 20 сентября 2011

Будет ли это работать?

Экспорт MySQL:

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

По какой-то причине отсутствуют столбцы. Поэтому я считаю, что есть проблема с разделителем. Я прав, что я могу сделать? Я могу проверить строку с ошибкой причины ниже. Но каких персонажей я должен искать?

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

Ответы [ 2 ]

14 голосов
/ 21 сентября 2011
  1. Как уже упоминалось @knitti, postgres должен знать escape-символ: 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;

postgres 9.0.3:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' ESCAPE E'\\' CSV
0 голосов
/ 20 сентября 2011

Символ кавычки по умолчанию в PostgreSQL - двойная кавычка, но документация говорит, что вы можете использовать любой однобайтовый символ.Попробуйте добавить

ESCAPE '\\'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...