9.4.3 Экспорт данных в формате с разделителями с помощью mysqldump
В этом разделе описывается использование mysqldump для создания файлов дампов данных с разделителями. Сведения о загрузке таких файлов дампов см. в разделе 9.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.