我需要创建一个脚本,以将我的生产数据库的开发副本自动更新为最新的数据和结构/等。
问题是生产数据库非常大,但是它的大部分由大约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子句表,然后将这些转储中的每一个逐一加载到新数据库中?
最佳答案
我想你那里有错字mysqldump -u root -p devdb smallTableNoWhereClause, bigTableWithWhereClauseAndOrderBy --where="1 ORDER BY id DESC LIMIT 2000"
您需要使用等号WHERE = "..."
并省略引号
MysqlDocs