如何使用mysql命令行工具将大表拆分为较小的多个表?

时间:2011-01-17 17:14:44

标签: mysql database

我有一个mysql表,我想分成更小的表。我想在1 - 199和200 - 299等范围内分解数据并将它们放入新表中。我将如何从mysql命令行工具中执行此操作?

2 个答案:

答案 0 :(得分:0)

实现此目标的最简单方法是使用mysqldump导出现有的表架构和数据。 (我建议使用“--complete-insert”选项。)

然后,您可以手动编辑结果文件,方法是添加相关的表创建语句并编辑INSERT行以使用相应的表名。

顺便提及:

  1. 虽然它可能不相关,但要注意在进行编辑等时将数据添加到原始表格中

  2. 如果这听起来有点手动和痛苦,那是因为它是。但是,你有一个相当奇怪的要求。

答案 1 :(得分:0)

计算出最大范围,比如它是10000

for i in $(seq 0 100 10000) ; do 
   echo "create table Table$i like MyTable" | mysql mydb
   echo "insert into Table$i select * from MyTable where id >=$i and id < $(($i+100))" | mysql mydb
done

但是,不要这样做。几乎没有理由分解这样的数据,它只会使查询变得更难,更难以管理,无论谁(可能是你)将维护你的数据库/应用程序最终会发疯。