mysql:使用where子句有选择地转储数据库

50pmv0ei  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(310)

我需要创建一个脚本来自动地将我的生产数据库的开发副本更新到最新的数据和结构等。
问题是生产数据库非常大,但它的大部分大小都由大约10个表控制,其中有数百万行我不需要。
我想对所有表进行完整的数据库转储,但有选择地限制从非常大的表中获取的行数,以便在保持合理的样本集以运行查询的同时保持较小的最终数据库大小。
我试着根据这个问题的建议来创建一个脚本

mysqldump -u root -p devdb smallTableNoWhereClause, bigTableWithWhereClauseAndOrderBy --where '1=1 order by id desc limit 2000'

然而,运行scirpt会产生荒谬的错误:

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 cluses的转储脚本,为较大的表创建带有where和order by子句的单个脚本,然后将这些转储逐个加载到新的数据库中?

gfttwv5a

gfttwv5a1#

我觉得你有个拼写错误 mysqldump -u root -p devdb smallTableNoWhereClause, bigTableWithWhereClauseAndOrderBy --where="1 ORDER BY id DESC LIMIT 2000" 你得用等号写 WHERE = "..." 和缺少的引号
mysqldocs公司

相关问题