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

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


当前回答

这应该可以

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

其他回答

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

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

这应该可以

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

下面是我的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 -u root -p dbname -t tablename --where="id<30" > post.sql

导出查询结果命令行:

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