单mysqldump
可以SQL query
吗?
我的意思是转储整个数据库,就像导出到phpmyadmin
时SQL
所做的那样
答案 0 :(得分:259)
不是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 :(得分:243)
这应该有效
mysqldump --databases X --tables Y --where="1 limit 1000000"
答案 2 :(得分:65)
您可以将查询转储为csv,如下所示:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
答案 3 :(得分:55)
使用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
选项,以便分别指定所需的数据库主机,用户和密码。 答案 4 :(得分:37)
您可以在mysqldump上使用--where选项来生成您正在等待的输出:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
来自test.t1的最多100行将从数据库表中转储。
干杯, WB
答案 5 :(得分:5)
如果要将最后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列。
您需要更改用户,localhost,数据库和表值。您可以选择更改id列并导出文件名。
答案 6 :(得分:3)
结合上面的大部分内容是我真正的实际例子,选择基于meterid和amp;的记录。时间戳。多年来我一直需要这个命令。快速执行。
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
答案 7 :(得分:2)
MySQL Workbench在GUI中也整齐地具有此功能。只需运行查询,单击导出/导入旁边的保存图标:
然后选择&#34; SQL INSERT语句(* .sql)&#34;在列表中。
输入名称,单击“保存”,确认表名,然后您将获得转储文件。
答案 8 :(得分:-1)
mysql导出查询结果命令行:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt