我有一个mysql表,我想分成更小的表。我想在1 - 199和200 - 299等范围内分解数据并将它们放入新表中。我将如何从mysql命令行工具中执行此操作?
答案 0 :(得分:0)
实现此目标的最简单方法是使用mysqldump导出现有的表架构和数据。 (我建议使用“--complete-insert”选项。)
然后,您可以手动编辑结果文件,方法是添加相关的表创建语句并编辑INSERT行以使用相应的表名。
顺便提及:
虽然它可能不相关,但要注意在进行编辑等时将数据添加到原始表格中
如果这听起来有点手动和痛苦,那是因为它是。但是,你有一个相当奇怪的要求。
答案 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
但是,不要这样做。几乎没有理由分解这样的数据,它只会使查询变得更难,更难以管理,无论谁(可能是你)将维护你的数据库/应用程序最终会发疯。