7.4.3 Экспорт данных в формате с разделителями с помощью mysqldump
В этом разделе описывается, как использовать mysqldump для создания файлов дампов данных в формате с разделителями. Сведения о загрузке таких файлов дампов см. в разделе 7.4.4 «Восстановление резервных копий в формате с разделителями».
Если вы вызываете mysqldump с параметром --tab=, он использует dir_namedir_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-optionally-enclosed-by=charСимвол для заключения значений нечисловых столбцов (по умолчанию: нет символа).
-
Символ для экранирования специальных символов (по умолчанию: нет экранирования).
-
Строка завершения строки (по умолчанию: новая строка).
В зависимости от значения, которое вы указываете для любого из этих параметров, может потребоваться на командной строке привести значение к нужному виду для интерпретатора команд. Кроме того, вы можете указать значение с использованием шестнадцатеричной нотации. Предположим, что вы хотите, чтобы 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.