Можно ли сделать это mysqldump
по одиночке SQL query
?
Я имею в виду сбросить всю базу данных, как это phpmyadmin
делает, когда вы делаете экспорт вSQL
Можно ли сделать это mysqldump
по одиночке SQL query
?
Я имею в виду сбросить всю базу данных, как это phpmyadmin
делает, когда вы делаете экспорт вSQL
Ответы:
не mysqldump, но mysql кли ...
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'
scp
после завершения соединения. вот пример. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Создайте таблицу с помощью запроса 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 в mysqldump, чтобы получить ожидаемый вывод:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
Максимум 100 строк из test.t1 будут выгружены из таблицы базы данных.
Ура, ВБ
Если вы хотите экспортировать последние 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, при условии, что таблица, из которой вы экспортируете, имеет столбец идентификатора с автоинкрементом.
Вам нужно будет изменить значения user, localhost, database и table. При желании вы можете изменить столбец id и имя файла экспорта.
MySQL Workbench также имеет эту функцию аккуратно в графическом интерфейсе. Просто запустите запрос, щелкните значок сохранения рядом с Экспорт / Импорт:
Затем выберите «операторы SQL INSERT (* .sql)» в списке.
Введите имя, нажмите «Сохранить», подтвердите имя таблицы, и вы получите файл дампа.
Сочетая многое из вышесказанного, я привожу реальный практический пример, выбирая записи на основе метры и метки времени. Я нуждался в этой команде в течение многих лет. Выполняется очень быстро.
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 Экспорт командной строки результатов запроса:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt