是否可以通过单个SQL查询来做mysqldump ?

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


当前回答

如果您想将最近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列和导出文件名。

其他回答

如果您想从表中转储特定的字段,这可能很方便

1/创建临时表与你的查询。

create table tmptable select field1, field2, field3 from mytable where filter1 and fileter2 ;

2/ dump整个临时表。然后就有了包含特定字段的转储文件。

mysqldump -u user -p mydatabase tmptable > my-quick-dump.sql

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

这应该可以

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

如果您想将最近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列和导出文件名。

您可以像这样将查询转储为csv:

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