【发布时间】:2019-04-10 04:05:12
【问题描述】:
我需要创建一个脚本来自动将我的生产数据库的开发副本更新为最新的数据和结构/等等。
问题是生产数据库非常大,但它的大部分大小由大约 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 和 order by 子句的单个脚本创建一个没有 where cluses 的转储脚本对于更大的表,然后将这些转储中的每一个一一加载到新数据库中?
【问题讨论】: