MySQL / 10. Импорт и экспорт данных

Указание формата файла данных

Задача
Формат вашего файла данных отличается от используемого в предложении LOAD DATA по умолчанию.

Решение
Используйте инструкции FIELDS и LINES, сообщающие предложению LOAD DATA, как следует интерпретировать файл.

Обсуждение
По умолчанию LOAD DATA полагает, что строки файла данных разделяются символом перевода строки LF, а значения данных в строке разделены символами табуляции. В следующем предложении нет никаких указаний на формат файла данных, поэтому MySQL принимает формат по умолчанию:

mysql> LOAD DATA LOCAL INFILE 'mytbl.txt' INTO TABLE mytbl;

Для явного указания формата используйте инструкцию FIELDS, определяющую характеристики полей в строке, и инструкцию LINES, устанавливающую разделители строк. В приведенном ниже предложении LOAD DATA указано, что значения в файле данных разделяются двоеточием, а строки завершаются символом возврата каретки:

mysql> LOAD DATA LOCAL INFILE 'mytbl.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r';

Обе инструкции следуют за именем таблицы. Если присутствуют обе инструкции, то первой должна быть FIELDS. Разделители полей и строк могут состоять из нескольких символов. Например, \r\n означает, что строки разделяются последовательностью CRLF.

При использовании программы mysqlimport формат указывается в командной строке. Команды, соответствующие двум приведенным выше предложениям LOAD DATA, выглядят так:

% mysqlimport --local cookbook mytbl.txt
% mysqlimport --local --fields-terminated-by=":" --lines-terminated-by="\r" \
cookbook mytbl.txt

Опции формата mysqlimport могут следовать в любом прядке, но обязательно должны предшествовать имени базы данных.

Статьи по MySQL на эту тему:

Диагностическая утилита для LOAD DATA
Извлечение и перестановка столбцов файлов данных
Импорт XML в MySQL
Импорт файлов в формате CSV
Использование временных таблиц для преобразования дат

Вернуться в раздел: MySQL / 10. Импорт и экспорт данных