2009-06-01 75 views

回答

211

不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" 
+0

也可以使用-B(--batch)开关输出为制表符分隔符。 – jonstjohn 2009-06-01 17:46:42

+39

如果我想要一个允许重新插入的格式,该怎么办? – 2010-02-18 13:37:33

+18

如何恢复这个转储的txt文件? – 2011-06-03 03:51:33

217

这应该工作

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

你可以转储查询为CSV这样的:

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

你可以使用--where选项上的mysqldump产生的输出,你是等待:

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

test.t1中至多有100行将从数据库表中转储。

干杯, WB

43

转储表使用,其中查询:

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

转储整个表:

mysqldump mydatabase mytable > data.sql 

注:

  • 更换mydatabasemytable,以及where语句与你想要的值。
  • 默认情况下,mysqldump将在其输出中包含DROP TABLECREATE TABLE语句。因此,如果您希望在从保存的数据文件恢复时不删除表中的所有数据,请确保使用--no-create-info选项。
  • 您可能需要将相应的-h,-u-p选项添加到上述示例命令中,以便分别指定所需的数据库主机,用户和密码。
2

结合上面的大部分内容是我真实的实例,根据两个meterid &时间戳选择记录。多年来我一直需要这个命令。执行速度非常快。

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

的MySQL将查询结果导出命令行:

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

MySQL工作台也有这个功能巧妙地在GUI中。只需运行一个查询,请单击保存图标旁边的导出/导入:

enter image description here

然后选择 “SQL INSERT语句(* .SQL)” 列表中。

enter image description here

输入名称,单击保存,确认表名,你将有你的转储文件。

0

如果你想记录你的最后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,假设表你”重新从一个自动递增的id列导出。

您将需要更改用户,本地主机,数据库和表值。您可以选择更改id列和导出文件名。