У меня есть таблица mysql, которую я хочу разбить на меньшие таблицы. Я хочу разбить данные в диапазонах 1 - 199 и 200 - 299 и поместить их в новые таблицы. Как мне это сделать с помощью инструмента командной строки mysql?
Самый простой способ добиться этого - просто использовать mysqldump для экспорта существующей схемы таблиц и данных. (Я бы рекомендовал использовать опцию "- complete-insert".)
Затем вы можете вручную отредактировать полученный файл, добавив соответствующие инструкции создания таблицы и отредактировав строки INSERT, чтобы использовать соответствующее имя таблицы.
Кстати:
Хотя это может и не быть актуальным, остерегайтесь добавления данных в исходную таблицу, пока вы выполняете редактирование и т.д.
Если все это звучит немного ручным и болезненным, это потому, что это так. Однако здесь у вас есть довольно странное требование.
вычислить максимальный диапазон, скажем, 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
Однако не делать этого. Там вряд ли будет какая-либо причина для разбивки данных, это будет только для того, чтобы сделать сложнее запрос, администрирование сложнее, кто бы (который может быть вы) не собирается поддерживать вашу базу данных/приложение, в конечном итоге сойдет с ума.