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

Самый простой способ экспортировать данные таблицы в текстовый файл — использовать оператор SELECT … INTO OUTFILE, который экспортирует результат запроса непосредственно в файл на хосте сервера.

Экспорт данных с помощью оператора SELECT … INTO OUTFILE

Синтаксис этого оператора объединяет обычную команду SELECT с именем файла INTO OUTFILE в конце. Формат вывода по умолчанию такой же, как и для команды ЗАГРУЗИТЬ ДАННЫЕ. Итак, следующий оператор экспортирует таблицу 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-databases доступен в версии MySQL 3.23.12. Этот метод можно использовать для реализации стратегии резервного копирования базы данных.

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

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

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

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

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

Теперь создайте файл ftp dump.txt на другом хосте и используйте следующую команду. Перед запуском этой команды убедитесь, что вы создали имя_базы_данных на целевом сервере.

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

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

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

В mysqldump половина команды подключается к локальному серверу и записывает вывод дампа в канал. Оставшаяся половина команды подключается к удаленному серверу MySQL на other-host.com. Он считывает канал для ввода и отправляет каждый оператор на сервер other-host.com.

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки