Дамп MySQL по запросу

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

Я хочу сбросить весь

9 ответов


не 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"

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

mysqldump --databases X --tables Y --where="1 limit 1000000"

вы можете сбросить запрос как csv, как это:

SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

дамп таблицы с помощью запроса 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 опции для приведенных выше команд примера, чтобы указать желаемый хост базы данных, пользователя и пароль соответственно.

вы можете использовать -- where option на mysqldump для получения вывода, который вы ждете:

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

более 100 строк из теста.t1 будет сброшен из таблицы базы данных.

Ура, WB


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

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

MySQL Workbench также имеет эту функцию аккуратно в GUI. Просто выполнить запрос, щелкните значок "сохранить" рядом с экспорт/импорт:

enter image description here

затем выберите " инструкции SQL INSERT (*.SQL)" в списке.

enter image description here

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


Если вы хотите экспортировать последнее 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, базы данных и таблицы. При необходимости можно изменить столбец id и экспортировать имя файла.


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

mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt