是否有可能通过单个mysqldump
做SQL query
?
我的意思是转储整个数据库,就像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 --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'
使用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上使用--where选项来生成您正在等待的输出:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
来自test.t1的最多100行将从数据库表中转储。
干杯,WB
如果要将最后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中。
您将需要更改用户,localhost,数据库和表值。您可以选择更改id列并导出文件名。
结合上面的大部分内容是我真正的实际例子,根据米特和时间戳选择记录。多年来我一直需要这个命令。快速执行。
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
mysql导出查询结果命令行:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt