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

我的意思是转储整个数据库,就像phpmyadmin在导出到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"

其他回答

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

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从不同的表中选择相同的关系:

 mysqldump --defaults-file=~/.mysql/datenbank.rc -Q -t -c --hex-blob \
 --default-character-set=utf8 --where="`cat where-relation-ids-in.sql`" \
 datenbank table01 table02 table03 table04 > recovered-data.sql

where-relation-ids-in.sql:

relation_id IN (6384291, 6384068, 6383414)

~ / .mysql / datenbank.rc

[client]
user=db_user
password=db_password
host=127.0.0.1

注意:如果你的relation_id文件很大,where子句的注释将在转储文件中被删除,但所有数据都是正确选择的;-)

我希望它能帮助到一些人;-)

这应该可以

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

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

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