MySQL дамп по запросу - PullRequest
203 голосов
/ 01 июня 2009

Можно ли сделать mysqldump одним SQL query?

Я имею в виду сбросить всю базу данных, как phpmyadmin, когда вы делаете экспорт в SQL

Ответы [ 9 ]

261 голосов
/ 01 июня 2009

не mysqldump, а mysql cli ...

mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase

Вы можете перенаправить его в файл, если хотите:

mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt

Обновление: Оригинальный пост спросил, может ли он сбросить из базы данных по запросу. То, что он спросил и что он имел в виду, было другим. Он действительно хотел просто mysqldump для всех таблиц.

mysqldump --tables myTable --where="id < 1000"
244 голосов
/ 18 февраля 2010

Это должно работать

mysqldump --databases X --tables Y --where="1 limit 1000000"
67 голосов
/ 28 апреля 2010

Вы можете отправить запрос в формате csv следующим образом:

SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
56 голосов
/ 25 февраля 2013

Создать таблицу с помощью запроса where:

mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql

Дамп всей таблицы:

mysqldump mydatabase mytable > data.sql

Примечания:

  • Замените mydatabase, mytable и оператор where на нужные значения.
  • По умолчанию mysqldump будет включать в свой вывод операторы DROP TABLE и CREATE TABLE. Поэтому, если вы хотите не удалить все данные в вашей таблице при восстановлении из сохраненного файла данных, убедитесь, что вы используете опцию --no-create-info.
  • Возможно, вам потребуется добавить соответствующие опции -h, -u и -p к приведенным выше примерам команд, чтобы указать желаемый хост базы данных, пользователя и пароль соответственно.
37 голосов
/ 19 августа 2011

Вы можете использовать опцию --where в mysqldump для получения ожидаемого вывода:

mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql

Из таблицы базы данных будет выгружено не более 100 строк из test.t1.

Cheers, WB

5 голосов
/ 03 марта 2018

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

mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql

Вышеуказанные 100 записей будут сохранены в файле export_file.sql, при условии, что таблица, из которой вы экспортируете, имеет столбец идентификатора с автоматическим увеличением.

Вам нужно будет изменить значения пользователя, localhost, базы данных и таблицы. При желании вы можете изменить столбец идентификатора и имя файла экспорта.

3 голосов
/ 20 октября 2014

Сочетание большей части из вышесказанного - мой реальный практический пример, выбор записей на основе метража и метки времени. Я нуждался в этой команде в течение многих лет. Выполняется очень быстро.

mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep  '^INSERT' > 5406.sql
2 голосов
/ 07 февраля 2017

MySQL Workbench также имеет эту функцию в графическом интерфейсе. Просто запустите запрос, щелкните значок сохранения рядом с пунктом «Экспорт / импорт»:

enter image description here

Затем выберите «Операторы SQL INSERT (* .sql)» в списке.

enter image description here

Введите имя, нажмите «Сохранить», подтвердите имя таблицы, и вы получите файл дампа.

0 голосов
/ 11 ноября 2016

mysql Экспорт командной строки результатов запроса:

mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...