English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Экспорт данных MySQL

В MySQL вы можете использоватьSELECT...INTO OUTFILEдля простого экспорта данных в текстовый файл.

Использование предложения SELECT ... INTO OUTFILE для экспорта данных

В следующем примере мы будем 导出到 файлу /tmp/w3codebox.txt данные из таблицы w3codebox_tbl:

mysql> SELECT * FROM w3codebox_tbl 
    -> INTO OUTFILE '/tmp/w3codebox.txt';

Вы можете использовать опцию команды для установки формата вывода данных, следующий пример показывает экспорт в формате CSV:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/w3codebox.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

В следующем примере создается файл, значения разделены запятыми. Этот формат может быть использован многими программами.

SELECT a, b, a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

Условие SELECT ... INTO OUTFILE имеет следующие свойства:

  • LOAD DATA INFILE - это обратная операция SELECT ... INTO OUTFILE, синтаксис SELECT. Для записи данных базы данных в файл используйте SELECT ... INTO OUTFILE, для чтения файла обратно в базу данных используйте LOAD DATA INFILE.

  • SELECT...INTO OUTFILE 'file_name' формата SELECT позволяет записать выбранные строки в файл. Этот файл создается на сервере-хосте, поэтому вам необходимо иметь привилегии FILE, чтобы использовать этот синтаксис.

  • Вывод не может быть существующим файлом. Предотвращает篡нение данных файла.

  • Вам需要一个 аккаунт для входа в сервер, чтобы retrieve файл. В противном случае SELECT ... INTO OUTFILE не будет работать.

  • В UNIX файл создается после его создания, и права доступа принадлежат серверу MySQL. Это означает, что although вы можете читать файл, возможно, вы не сможете его удалить.

Экспортировать таблицу как исходные данные

mysqldump - это утилита mysql для резервного копирования базы данных. Она создает SQL-скрипт, который содержит команды CREATE TABLE, INSERT и т.д., необходимые для восстановления базы данных.

Для экспорта данных с помощью mysqldump необходимо использовать опцию --tab для указания каталога для экспортируемых файлов, который должен быть доступен для записи.

Следующий пример экспортирует таблицу w3codebox_tbl в каталог /tmp:

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3codebox w3codebox_tbl
password ******

Экспортировать данные в формате SQL

Экспортировать данные в формате SQL в указанный файл, как показано ниже:

$ mysqldump -u root -p w3codebox w3codebox_tbl > dump.txt
password ******

Содержимое файла, созданного этими командами, выглядит следующим образом:

-- MySQL dump 8.23
--
-- Хост: localhost    База данных: w3codebox
---------------------------------------------------------
-- Версия сервера       3.23.58
--
-- Структура таблицы для таблицы `w3codebox_tbl`
--
CREATE TABLE w3codebox_tbl (
  w3codebox_id int(11) NOT NULL auto_increment,
  w3codebox_title varchar(100) NOT NULL default '',
  w3codebox_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  Основной ключ (w3codebox_id),
  Уникальный ключ AUTHOR_INDEX (w3codebox_author)
) TYPE=MyISAM;
--
-- Загрузка данных для таблицы `w3codebox_tbl`
--
INSERT INTO w3codebox_tbl 
       VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

Если вам нужно экспортировать все данные из базы данных, вы можете использовать следующую команду:

$ mysqldump -u root -p w3codebox > database_dump.txt
password ******

Если вам нужно сделать резервную копию всех баз данных, вы можете использовать следующую команду:

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

--опция --all-databases добавлена в MySQL начиная с версии 3.23.12.

Этот метод можно использовать для реализации стратегии резервного копирования базы данных.

Скопируйте таблицы и базы данных на другой сервер

Если вам нужно скопировать данные на другой сервер MySQL, вы можете указать имя базы данных и таблицы в команде mysqldump.

Выполните следующие команды на источнике, чтобы создать резервную копию данных в файл dump.txt:

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

Если выполняется полная резервная копия базы данных, то не нужно указывать конкретное имя таблицы.

Если вам нужно импортировать резервную копию базы данных в сервер MySQL, вы можете использовать следующие команды, при использовании которых вам нужно подтвердить создание базы данных:

$ mysql -u root -p database_name < dump.txt
password *****

Вы также можете использовать следующие команды для прямого импорта экспортированных данных на удаленный сервер, но убедитесь, что два сервера доступны друг другу, и они могут обмениваться данными:

$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

В указанных командах используется трубка для импорта экспортированных данных на указанный удаленный сервер.