MYSQL:使用where子句选择性地转储数据库

时间:2018-11-06 17:56:39

标签: mysql database

我需要创建一个脚本来自动将生产数据库的开发副本自动更新为最新的数据和结构/等。

问题在于生产数据库非常大,但是它的大部分由大约10个表所保存,而我不需要数百万行。

我想对所有表进行完整的数据库转储,但有选择地限制从非常大的表中获取的行数,以使最终数据库的大小保持较小,同时保持合理的样本集以对其进行查询。

我尝试根据this question

的建议创建脚本
mysqldump -u root -p devdb smallTableNoWhereClause, bigTableWithWhereClauseAndOrderBy --where '1=1 order by id desc limit 2000'

运行该脚本会产生无意义的错误:

mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `WH_SkuArrivals` WHERE 1 order by id desc limit 10': Unknown column 'id' in 'order clause' (1054)

这毫无意义,因为“ id”是该表的主键。

正在像这样创建转储脚本是正确的想法,是否有更好的选择,还是我必须创建所有较小的表(大约500个)没有where子句的转储脚本以及带有where和order by子句的单个脚本对于更大的表,然后将每个转储一个一个地加载到新数据库中?

1 个答案:

答案 0 :(得分:0)

我想你那里有错字

mysqldump -u root -p devdb smallTableNoWhereClause, bigTableWithWhereClauseAndOrderBy --where="1 ORDER BY id DESC LIMIT 2000"

您需要用等号WHERE = "..."和引号引起来写

https://wiki.archlinux.org/index.php/Xilinx_Vivado