Spec-Zone.ru › MySQL 8.4

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-8.4-en/mysqldump-delimited-text.html

Spec-Zone.ru

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