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 

笔记:

  • mydatabasemytable和where语句replace为所需的值。
  • 默认情况下, mysqldump将在其输出中包含DROP TABLECREATE 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