Учебники

MySQL — Импорт базы данных — Методы восстановления

В MySQL есть два простых способа загрузки данных в базу данных MySQL из ранее сохраненного файла.

Импорт данных с помощью LOAD DATA

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

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  • Если ключевое слово LOCAL отсутствует, MySQL ищет файл данных на хосте сервера, используя поиск по абсолютному пути , который полностью определяет местоположение файла, начиная с корня файловой системы. MySQL читает файл из указанного местоположения.

  • По умолчанию LOAD DATA предполагает, что файлы данных содержат строки, которые заканчиваются переводами строк (новыми строками), а значения данных в строке разделяются вкладками.

  • Чтобы явно указать формат файла, используйте предложение FIELDS для описания характеристик полей в строке и предложение LINES для указания конца строки. Следующая инструкция LOAD DATA указывает, что файл данных содержит значения, разделенные двоеточиями и строками, оканчивающимися возвратом каретки и символом новой строки.

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

По умолчанию LOAD DATA предполагает, что файлы данных содержат строки, которые заканчиваются переводами строк (новыми строками), а значения данных в строке разделяются вкладками.

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

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
   -> FIELDS TERMINATED BY ':'
   -> LINES TERMINATED BY '\r\n';
  • Команда LOAD DATA предполагает, что столбцы в файле данных имеют тот же порядок, что и столбцы в таблице. Если это не так, вы можете указать список, чтобы указать, в какие столбцы таблицы должны быть загружены столбцы файла данных. Предположим, что в вашей таблице есть столбцы a, b и c, но последовательные столбцы в файле данных соответствуют столбцам b, c и a.

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

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

mysql> LOAD DATA LOCAL INFILE 'dump.txt' 
   -> INTO TABLE mytbl (b, c, a);

Импортирование данных с помощью mysqlimport

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

Чтобы загрузить данные из файла dump.txt в mytbl , используйте следующую команду в командной строке UNIX.

$ mysqlimport -u root -p --local database_name dump.txt
password *****

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

$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
   --lines-terminated-by = "\r\n"  database_name dump.txt
password *****

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

Оператор mysqlimport использует опцию —columns для указания порядка столбцов —

$ mysqlimport -u root -p --local --columns=b,c,a \
   database_name dump.txt
password *****

Обработка цитат и специальных символов

Предложение FIELDS может указывать другие параметры формата, кроме TERMINATED BY . По умолчанию LOAD DATA предполагает, что значения не заключены в кавычки, и интерпретирует обратную косую черту (\) как escape-символ для специальных символов. Чтобы явно указать символ кавычки, используйте команду ENCLOSED BY . MySQL удалит этот символ с концов значений данных во время обработки ввода. Чтобы изменить управляющий символ по умолчанию, используйте ESCAPED BY .

Когда вы указываете ENCLOSED BY, чтобы указать, что символы кавычек должны быть удалены из значений данных, можно включить символ кавычки буквально в значения данных, удвоив его или поставив перед ним escape-символ.

Например, если кавычки и escape-символы равны «и \», входное значение «a», «b \» c » будет интерпретироваться как « b »c .

Для mysqlimport соответствующие параметры командной строки для указания кавычек и экранирующих значений — —fields-enclosed-by и —fields-escaped-by .