MySQL通过查询转储

问题描述 投票:202回答:9

是否有可能通过单个mysqldumpSQL query

我的意思是转储整个数据库,就像phpmyadmin在导出到SQL时那样

sql mysql database
9个回答
257
投票

不是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"

242
投票

这应该工作

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

65
投票

您可以将查询转储为csv,如下所示:

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

54
投票

使用where查询转储表:

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选项,以分别指定所需的数据库主机,用户和密码。

37
投票

您可以在mysqldump上使用--where选项来生成您正在等待的输出:

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

来自test.t1的最多100行将从数据库表中转储。

干杯,WB


5
投票

如果要将最后n个记录导出到文件中,可以运行以下命令:

mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql

假设您导出的表具有自动递增的id列,上面将最后100条记录保存到export_file.sql中。

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


3
投票

结合上面的大部分内容是我真正的实际例子,根据米特和时间戳选择记录。多年来我一直需要这个命令。快速执行。

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 Workbench在GUI中也整齐地具有此功能。只需运行查询,单击“导出/导入”旁边的“保存”图标:

enter image description here

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

enter image description here

输入名称,单击“保存”,确认表名,然后您将获得转储文件。


-1
投票

mysql导出查询结果命令行:

mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt
© www.soinside.com 2019 - 2024. All rights reserved.