Spec-Zone.ru › MySQL 5.7

7.4.3 Экспорт данных в формате с разделителями с помощью mysqldump

В этом разделе описывается, как использовать mysqldump для создания файлов дампов данных в формате с разделителями. Сведения о загрузке таких файлов дампов см. в разделе 7.4.4 «Восстановление резервных копий в формате с разделителями».

Если вы вызываете mysqldump с параметром --tab=dir_name, он использует dir_name в качестве выходного каталога и экспортирует таблицы по отдельности в этот каталог, используя два файла для каждой таблицы. Имя таблицы является базовым именем для этих файлов. Для таблицы с именем t1 файлы называются t1.sql и t1.txt. Файл .sql содержит оператор CREATE TABLE для таблицы. Файл .txt содержит данные таблицы, по одной строке на строку таблицы.

Следующая команда экспортирует содержимое базы данных db1 в файлы в базе данных /tmp:

$> mysqldump --tab=/tmp db1

Файлы .txt, содержащие данные таблиц, записываются сервером, поэтому они принадлежат системному учетной записи, используемой для запуска сервера. Сервер использует SELECT ... INTO OUTFILE для записи файлов, поэтому у вас должна быть привилегия FILE для выполнения этой операции, и возникает ошибка, если данный файл .txt уже существует.

Сервер отправляет определения CREATE для экспортируемых таблиц в mysqldump, который записывает их в файлы .sql. Следовательно, эти файлы принадлежат пользователю, который выполняет mysqldump.

Лучше всего использовать --tab только для экспорта локального сервера. Если вы используете его с удалённым сервером, каталог --tab должен существовать как на локальном, так и на удалённом хостах, и файлы .txt записываются сервером в удалённом каталоге (на сервере), в то время как файлы .sql записываются mysqldump в локальном каталоге (на клиенте).

Для mysqldump --tab сервер по умолчанию записывает данные таблицы в файлы .txt по одной строке на строку с табуляцией между значениями столбцов, без кавычек вокруг значений столбцов и новой строки в качестве символа завершения строки. (Эти значения по умолчанию такие же, как и для SELECT ... INTO OUTFILE.)

Чтобы разрешить запись файлов данных в другом формате, mysqldump поддерживает следующие параметры:

  • --fields-terminated-by=str

    Строка для разделения значений столбцов (по умолчанию: табуляция).

  • --fields-enclosed-by=char

    Символ для заключения значений столбцов (по умолчанию: нет символа).

  • --fields-optionally-enclosed-by=char

    Символ для заключения значений нечисловых столбцов (по умолчанию: нет символа).

  • --fields-escaped-by=char

    Символ для экранирования специальных символов (по умолчанию: нет экранирования).

  • --lines-terminated-by=str

    Строка завершения строки (по умолчанию: новая строка).

В зависимости от значения, которое вы указываете для любого из этих параметров, может потребоваться на командной строке привести значение к нужному виду для интерпретатора команд. Кроме того, вы можете указать значение с использованием шестнадцатеричной нотации. Предположим, что вы хотите, чтобы mysqldump заключал значения столбцов в двойные кавычки. Для этого укажите двойные кавычки в качестве значения для параметра --fields-enclosed-by. Однако этот символ часто является специальным для интерпретаторов команд и должен обрабатываться специально. Например, в Unix вы можете заключить двойные кавычки в кавычки так:

--fields-enclosed-by='"'

На любой платформе вы можете указать значение в шестнадцатеричном виде:

--fields-enclosed-by=0x22

Обычно используется несколько параметров форматирования данных вместе. Например, для экспорта таблиц в формате CSV с разделителями, завершаемыми парами возврата каретки/новой строки (\r\n), используйте следующую команду (введите ее в одной строке):

$> mysqldump --tab=/tmp --fields-terminated-by=,
         --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysqldump-delimited-text.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API