【发布时间】:2010-10-30 10:49:03
【问题描述】:
单SQL query可以做mysqldump吗?
我的意思是转储整个数据库,就像你导出到SQL时phpmyadmin所做的那样
【问题讨论】:
单SQL query可以做mysqldump吗?
我的意思是转储整个数据库,就像你导出到SQL时phpmyadmin所做的那样
【问题讨论】:
如果您想从表中转储特定字段,这会很方便
1/ 使用您的查询创建临时表。
create table tmptable select field1, field2, field3 from mytable where filter1 and fileter2 ;
2/ 转储整个临时表。然后你就有了包含特定字段的转储文件。
mysqldump -u user -p mydatabase tmptable > my-quick-dump.sql
【讨论】:
如果要将最后 n 条记录导出到文件中,可以运行以下命令:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
假设您要从中导出的表有一个自动递增的 id 列,以上内容会将最后 100 条记录保存到 export_file.sql。
您将需要更改用户、本地主机、数据库和表的值。您可以选择更改 id 列和导出文件名。
【讨论】:
mysql导出查询结果命令行:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt
【讨论】:
结合上面的大部分内容是我真正的实际示例,根据 Meterid 和时间戳选择记录。我多年来一直需要这个命令。执行速度非常快。
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
【讨论】:
不是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"
【讨论】:
您可以像这样将查询转储为 csv:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
【讨论】:
scp 检索转储文件。这是一个例子。 scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
您可以在 mysqldump 上使用 --where 选项来生成您正在等待的输出:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
test.t1 中最多 100 行将从数据库表中转储。
干杯, 世界银行
【讨论】:
使用 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 选项,以便分别指定所需的数据库主机、用户和密码。【讨论】:
这应该可以工作
mysqldump --databases X --tables Y --where="1 limit 1000000"
【讨论】:
--no-create-info 选项。有关示例,请参见 my answer。