Импорт с помощью LOAD DATA и утилиты mysqlimport

Задача
Вы хотите загрузить данные из файла в таблицу, используя встроенные средства импорта MySQL.

Решение
Используйте предложение LOAD DATA или утилиту командной строки mysqlimport.

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

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

Кроме того, в MySQL имеется утилита mysqlimport, выступающая в роли оболочки для LOAD DATA, что позволяет загружать файлы прямо из командной строки. Если предположить, что таблица mytbl находится в базе данных cookbook, то команда mysqlimport, эквивалентная приведенному выше предложению LOAD DATA, выглядит так:

% mysqlimport --local cookbook mytbl.txt

Большинство из перечисленных ниже характеристик предложения LOAD DATA относятся и к mysqlimport. Есть несколько различий, которых мы коснемся по мере изложения, но в большинстве случаев там, где написано «LOAD DATA», можно читать «LOAD DATA или mysqlimport».


Предложение LOAD DATA имеет опции, соответствующие таким рассмотренным выше параметрам импорта, как символы конца строки для разбиения данных на записи, разделитель столбцов для выделения отдельных значений, символы для заключения значений столбцов в кавычки, экранирования кавычек внутри значений и представления неопределенных значений:

• По умолчанию LOAD DATA предполагает, что файл данных содержит то же количество столбцов, что и таблица, в которую загружаются данные, и эти столбцы находятся в том же порядке. Если в файле отсутствуют значения некоторых столбцов или их порядок отличается от принятого в таблице, то вы можете указать, какие столбцы есть в наличии и в каком порядке. Если в файле меньше столбцов, чем в таблице, то MySQL записывает значения по умолчанию в те столбцы, для которых нет данных.

• LOAD DATA исходит из предположения, что значения разделены символами табуляции и что строки заканчиваются символом LF (перевод строки). Если файл не удовлетворяет этим условиям, вы можете явно указать формат данных.

• Вы можете указать на необходимость удаления кавычек, окружающих значения, и определить символ, используемый в качестве кавычки.

• В процессе ввода распознаются и преобразовываются некоторые специальные экранирующие последовательности.


По умолчанию в качестве экранирующего символа используется обратный слэш (\), но при желании это можно изменить. Комбинация \N используется для представления значения NULL. Последовательности \b, \n, \r, \t, \\ и \0 интерпретируются как символы забоя, перевода строки, возврата каретки, табуляции, обратного слэша и ASCII-ноля (NUL) соответственно. (Значение NUL – это байт, содержащий нулевое значение (это не то же самое, что значение NULL в SQL).

• Предложение LOAD DATA выводит диагностическую информацию, но в обобщенном виде, не дающем представления о том, в каких строках может находиться источник проблем. В MySQL 4 предполагается расширить возможности диагностики. Пока же можете пользоваться рецептом 10.37, в котором описана диагностическая утилита для LOAD DATA.
Следующие несколько разделов рассказывают, как импортировать в MySQL файлы данных при помощи LOAD DATA или mysqlimport. Предполагается, что значения данных корректны и могут быть использованы в MySQL. Для чего сделано это допущение? Дело в том, что хотя у LOAD DATA и есть некоторые средства контроля входных данных, они ориентированы в основном на проверку структуры файла. LOAD DATA не проверяет правильность значений и не выполняет преобразований. Эти операции придется выполнять либо до загрузки – над файлом данных, либо после – средствами SQL.

Оцените статью: (0 голосов)
0 5 0

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

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