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

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


当前回答

导出查询结果命令行:

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

其他回答

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

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

来自测试的最多100行。T1将从数据库表中转储。

使用where查询转储表:

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

转储整个表:

mysqldump mydatabase mytable > data.sql

注:

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

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

结合以上大部分内容,这里是我的实际示例,基于计量和时间戳选择记录。多年来我一直需要这个命令。执行得非常快。

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

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

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