Простейший способ экспорта табличных данных в текстовый файл — использование оператора SELECT … INTO OUTFILE, который экспортирует результат запроса непосредственно в файл на хосте сервера.
Экспорт данных с помощью оператора SELECT … INTO OUTFILE
Синтаксис этого оператора объединяет обычную команду SELECT с именем файла INTO OUTFILE в конце. Формат вывода по умолчанию такой же, как и для команды LOAD DATA. Таким образом, следующий оператор экспортирует таблицу tutorials_tbl в /tmp/tutorials.txt в виде файла с разделителями табуляцией и завершением строки.
mysql> SELECT * FROM tutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
Вы можете изменить формат вывода, используя различные параметры, чтобы указать, как заключать в кавычки и разделять столбцы и записи. Чтобы экспортировать таблицу tutorial_tbl в формате CSV со строками, оканчивающимися CRLF, используйте следующий код.
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
SELECT … INTO OUTFILE обладает следующими свойствами —
- Выходной файл создается непосредственно сервером MySQL, поэтому имя файла должно указывать, куда вы хотите записать файл на хост сервера. ЛОКАЛЬНОЙ версии оператора, аналогичной ЛОКАЛЬНОЙ версии LOAD DATA, не существует .
- У вас должна быть привилегия MySQL FILE для выполнения инструкции SELECT … INTO .
- Выходной файл не должен уже существовать. Это препятствует тому, чтобы MySQL забивал файлы, которые могут быть важны.
- У вас должна быть учетная запись на хосте сервера или какой-то другой способ получить файл с этого хоста. В противном случае команда SELECT … INTO OUTFILE , скорее всего, не будет иметь для вас никакого значения.
- В UNIX файл создается для чтения и принадлежит серверу MySQL. Это означает, что, хотя вы сможете прочитать файл, вы не сможете удалить его.
Экспорт таблиц в виде необработанных данных
Программа mysqldump используется для копирования или резервного копирования таблиц и баз данных. Он может записывать вывод таблицы в виде необработанного файла данных или в виде набора операторов INSERT, которые воссоздают записи в таблице.
Чтобы выгрузить таблицу как файл данных, вы должны указать опцию —tab, которая указывает каталог, в который вы хотите, чтобы сервер MySQL записывал файл.
Например, чтобы выгрузить таблицу tutorials_tbl из базы данных TUTORIALS в файл в каталоге / tmp , используйте команду, как показано ниже.
$ mysqldump -u root -p --no-create-info \
--tab=/tmp tutorials tutorials_tbl
password ******
Экспорт содержимого таблицы или определений в формате SQL
Чтобы экспортировать таблицу в формате SQL в файл, используйте команду, показанную ниже.
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******
Это создаст файл с содержимым, как показано ниже.
-- MySQL dump 8.23
--
-- Host: localhost Database: TUTORIALS
---------------------------------------------------------
-- Server version 3.23.58
--
-- Table structure for table `tutorials_tbl`
--
CREATE TABLE tutorials_tbl (
tutorial_id int(11) NOT NULL auto_increment,
tutorial_title varchar(100) NOT NULL default '',
tutorial_author varchar(40) NOT NULL default '',
submission_date date default NULL,
PRIMARY KEY (tutorial_id),
UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE = MyISAM;
--
-- Dumping data for table `tutorials_tbl`
--
INSERT INTO tutorials_tbl
VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO tutorials_tbl
VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO tutorials_tbl
VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
Чтобы вывести несколько таблиц, назовите их все, а затем аргумент имени базы данных. Чтобы создать дамп всей базы данных, не называйте никаких таблиц после базы данных, как показано в следующем блоке кода.
$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******
Для резервного копирования всех баз данных, доступных на вашем хосте, используйте следующий код.
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
Опция —all-database доступна в версии MySQL 3.23.12. Этот метод можно использовать для реализации стратегии резервного копирования базы данных.