MySQL通过查询转储
是否有可能通过单个SQL query
来执行mysqldump
?
我的意思是转储整个数据库,就像phpmyadmin
在导出到SQL
不是mysqldump,但MySQL cli …
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
你可以redirect到一个文件,如果你想:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
更新:原来的post问他是否可以通过查询从数据库转储。 他问的和他的意思是不一样的。 他真的只想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语句replace为所需的值。 - 默认情况下,
mysqldump
将在其输出中包含DROP TABLE
和CREATE TABLE
语句。 因此,如果您希望在从保存的数据文件恢复时不删除表中的所有数据,请确保使用--no-create-info
选项。 - 您可能需要在上面的示例命令中添加相应的
-h
,-u
和-p
选项,以分别指定所需的数据库主机,用户和密码。
您可以使用mysqldump上的where选项来产生您正在等待的输出:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
来自test.t1的最多100行将从数据库表中转储。
干杯,WB
结合上面的大部分内容是我真实的实例,根据meterid和时间戳selectlogging。 我需要这个命令多年。 执行速度非常快。
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中也有这个特性。 只需运行查询,单击导出/导入旁边的保存图标:
然后在列表中select“SQL INSERT语句(* .sql)”。
input一个名称,点击保存,确认表名,你将有你的转储文件。
mysql导出查询结果命令行:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt