是否可以通过单个SQL查询来做mysqldump ?
我的意思是转储整个数据库,就像phpmyadmin在导出到SQL时所做的那样
是否可以通过单个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"
其他回答
下面是我的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子句的注释将在转储文件中被删除,但所有数据都是正确选择的;-)
我希望它能帮助到一些人;-)
MySQL Workbench在GUI中也有这个功能。简单地运行一个查询,点击导出/导入旁边的保存图标:
在列表中选择“SQL INSERT语句(*. 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
要转储特定的表,
mysqldump -u root -p dbname -t tablename --where="id<30" > post.sql
使用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选项,以便分别指定所需的数据库主机、用户和密码。