Базы данных SQLite: копирование данных из таблицы всех данных db1 в DB2 таблицы
Я столкнулся с требованием миграции данных. Если есть изменения в структуре БД, я должен сначала взять копию БД, а затем удалить эту существующую БД, создать новую БД с тем же именем и сбросить все данные из скопированной БД в новую БД.
Для реализации вышеупомянутой задачи я планировал создать консольное приложение или службу Windows с использованием языка C#.
Что я уже пробовал:
Я могу скопировать БД во временное местоположение с помощью
BackupDatabaseспособ получения
System.Data.SQLite
Что касается восстановления данных в новую БД...
Используется ниже команда SQLite в браузере SQLite для копирования данных одной таблицы
END TRANSACTION; ATTACH 'C:\Program Files\DB Browser for SQLite\TestDB.db' AS SourceDB; ATTACH 'D:\Documents\Demo Applications\Windows\WindowsFormsApplication_SQLite\Database\TestDB.db' AS DestDB; BEGIN TRANSACTION; INSERT INTO DestDB.TestEmployee SELECT * FROM SourceDB.TestEmployee; COMMIT;
Но я не уверен, как выполнить описанную выше операцию со всеми таблицами, существующими в исходной БД, то есть выполнить цикл через все таблицы для копирования и вставки данных.
Другая проблема заключается в изменении структуры таблицы, т. е. если таблица a1 имеет два столбца в резервной БД (из которой я должен скопировать данные) и таблица A1 целевой БД имеет 3 столбца (т. е. один новый столбец) , то запрос, упомянутый в Примере, не дает ошибки: таблица DestDB.TestEmployee имеет 3 колонки, но только 2 значения
Как можно справиться с этим несоответствием столбцов или есть еще один элегантный способ переноса данных из одной БД в другую?