Spec-Zone.ru › MySQL 9.2

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

В этом разделе описывается использование mysqldump для создания файлов дампов данных с разделителями. Сведения о загрузке таких файлов дампов см. в разделе 9.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-9.2-en/mysqldump-delimited-text.html

Spec-Zone.ru

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