[Миграции баз данных SQLite] Оцените, пожалуйста, сложность задачи
Если различия небольшие, то можно частично сделать ddl скриптами, частично dml.
Если различия больше, то проще перепилить старую в новую.
Естественно, еще важен размер базы, и сколько времени отводится на выполнение миграции. Если там терабайты, и простой должен быть в несколько минут, то всё гораздо интереснее.
Специфики SQLite не знаю.
База данных небольшая, объемом около 50 Мб, таблиц, не являющихся связями, около 20-ти
А что означает выражение "перепилить старую [базу данных] в новую"? Данные ведь нужно где-то сохранить.
База на мобильных устройствах?
Посмотрел, в SQLite даже нельзя переименовать или удалить поле в таблице напрямую (http://www.sqlite.org/lang_altertable.html)
Посмотрел, в SQLite даже нельзя переименовать или удалить поле в таблице напрямую (http://www.sqlite.org/lang_altertable.html)Создай новую таблицу селектом из старой.
Была таблица: CREATE TABLE team(Name TEXT, Coach TEXT, City TEXT);
Переименование поля City --> Location:
(1) ALTER TABLE team RENAME TO team_orig;
(2) CREATE TABLE team(Name TEXT, Coach TEXT, Location TEXT);
(3) INSERT INTO team(Name, Coach, Location) SELECT Name, Coach, City FROM team_orig;
(4) DROP TABLE team_orig;
Пока задача про сферического коня.
Тот же sqlite на время переноса можно значительно ускорить, если отказаться от потверждения записи на диск.
Да, так можно, но сложность значительно выше.В чём сложность то? Больше строк написать? Для однократной миграции не велика разница 1 или 4 строки написать. Если ты там каждый день мигрируешь, то
База данных небольшая, объемом около 50 Мб, таблиц, не являющихся связями, около 20-тиэто типа теперь называется миграция бд?
Оставить комментарий
nikola1956
Раньше, к сожалению, никогда не сталкивался с задачей о миграциях баз данных. Поделитесь, пожалуйста, опытом, насколько сложная эта задача? Легко ли писать sql-скрипты для произвольных изменений в базе данных, которые должны происходить без потери данных? Имею в виду переименование таблиц, полей, удаление полей, изменение связей между таблицами и т.п.Или все это настолько сложно и неудобно, что категорически рекомендуется предварительно сохранить данные в облаке (на каком-то сервере а потом их заново загрузить в пересозданную базу данных?