Обратный путь INTO OUTFILE, редактирование Excel и ЗАГРУЗКА ДАННЫХ INFILE без искажений

Я пытался экспортировать таблицу mysql с INTO OUTFILE в CSV для редактирования в Excel, а затем вставлять обратно в mysql с помощью LOAD DATA INFILE.

Я могу экспортировать нормально и даже повторно вставить неотредактированный файл. Однако, если я открою в Excel, внесу изменения, а затем сохраню, все испортится. Я выбираю «Да», когда он спрашивает, уверен ли я, что хочу экспортировать в CSV, но даже если я попытаюсь повторно открыть файл в Excel, он получит недопустимый формат.

Мне интересно, какие правильные настройки "ПОЛЯ ESCAPED BY, TERMINATED и т. Д." будет для каждой команды, чтобы гарантировать совместимость с Excel.

Спасибо,


person christian    schedule 21.01.2012    source источник
comment
Если это поможет, у меня есть все типы данных, суммы в долларах, десятичные значения с процентами и т. Д. Таблица для повторной вставки состоит из полей varchar.   -  person christian    schedule 21.01.2012
comment
Это похоже на 8031193   -  person arober11    schedule 03.12.2012


Ответы (1)


Вы должны уметь:

SELECT < > FROM <blah>
INTO OUTFILE '<filename>' 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Вы также можете:

SELECT < > FROM <blah>
INTO OUTFILE '<filename>'
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

Вы также можете использовать '|' в качестве разделителя и импортируйте файл с разделителями.

person Karlson    schedule 21.01.2012
comment
Спасибо за ответ. Это обрезается везде, где есть запятая, и заменяет оставшуюся часть поля на '\'. Я могу добавить ENCLOSED BY '' ..., который заставляет данные превосходно работать, но когда я редактирую и сохраняю, они портятся в LOAD DATA INFILE. - person christian; 21.01.2012
comment
@christian У вас есть вкладки в столбцах? - person Karlson; 21.01.2012
comment
Похоже, что Excel не поддерживает параметр вкладки. Я пытаюсь позволить пользователям легко редактировать свои данные, чтобы избежать лишних шагов. - person christian; 21.01.2012
comment
@christian Excel позволяет импортировать текстовый файл, разделенный чем-то другим, вы также можете попробовать просто сделать его файлом .xls и попытаться открыть его. - person Karlson; 21.01.2012
comment
Я уверен, что есть способ импорта с другим разделителем, но я просто пытаюсь упростить задачу для пользователя. Я могу экспортировать в CSV нормально, поэтому я думаю, что попробую использовать fgetcsv вместо импорта данных. Я обрабатываю постфактум, поэтому скорость вставки не так важна, как скорость экспорта. - person christian; 21.01.2012
comment
Нет, из базы данных MYSQL. Я могу экспортировать много записей за секунды с INTO OUTFILE. - person christian; 21.01.2012
comment
@christian Разделитель не изменяет скорость экспорта. - person Karlson; 21.01.2012