Название: как скопировать БД? Отправлено: alex-v от Сентябрь 25, 2010, 15:06 есть база данных sqlite в памяти.
Код: QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "memoryDB"); Требуется сделать точную её копию в файл на диске. Как бы это реализовать? Название: Re: как скопировать БД? Отправлено: Denjs от Сентябрь 25, 2010, 16:18 Cоздать вторую БД на диске и перегрузить дамп. по моему так.
Вроде как можно и сразу (не проверял, см ccылки ) типа так: Код: ATTACH DATABASE New.db AS new; http://www.sqlite.org/lang_attach.html Название: Re: как скопировать БД? Отправлено: alex-v от Сентябрь 25, 2010, 17:01 Cоздать вторую БД на диске и перегрузить дамп. по моему так. а как это реализовать? пример кода можно? Цитировать Вроде как можно и сразу (не проверял, см ccылки ) за ссылки спасибо. почитал. но что-то не получается ничего реализовать. Подскажите пример кода. спасибо. p.s. Что-то не могу также понять, для чего нужно "ATTACH DATABASE" ... Название: Re: как скопировать БД? Отправлено: lit-uriy от Сентябрь 25, 2010, 17:31 >>для чего нужно "ATTACH DATABASE"
ATTACH - прикрепить прикрепляет одну БД к другой, и тогда с таблицами можно работать, как если бы они были в одной БД Название: Re: как скопировать БД? Отправлено: alex-v от Сентябрь 25, 2010, 17:40 ATTACH - прикрепить прикрепляет одну БД к другой, и тогда с таблицами можно работать, как если бы они были в одной БД спасибо за разъяснение, только не могу что-то сообразить как мне этим пользоваться в моём случае... может кто поможет? Название: Re: как скопировать БД? Отправлено: Marat(Qt) от Сентябрь 25, 2010, 18:23 Вариант:
взять QSqlQuery(пусть будет query1) прикрепленный к базе ":memory:" и QSqlQuery, прикрепленный к "file.sql"(query2). С помощью query1 делаете "SELECT * FROM table_name", потом с помощью query2 делаете "INSERT INTO ..." используя данные из query1. Как я понял, выше вам предлагали более изящный вариант. Хотя я с трудом представляю его в Qt. В моем понимании - один QSqlQuery работает с одной БД, но никак не с двумя. Название: Re: как скопировать БД? Отправлено: alex-v от Сентябрь 25, 2010, 18:28 Вариант: взять QSqlQuery(пусть будет query1) прикрепленный к базе ":memory:" и QSqlQuery, прикрепленный к "file.sql"(query2). С помощью query1 делаете "SELECT * FROM table_name", потом с помощью query2 делаете "INSERT INTO ..." используя данные из query1. Как я понял, выше вам предлагали более изящный вариант. Хотя я с трудом представляю его в Qt. В моем понимании - один QSqlQuery работает с одной БД, но никак не с двумя. можно и так. Но проблема в том, что так не получиться сделать точную копию БД. Ведь нам надо знать как таблица из источника создавалась (create table ...), с какими параметрами и т.п. Нужно еще как-то все индексы скопировать... Это всё нужно как-то учесть... Название: Re: как скопировать БД? Отправлено: alex-v от Сентябрь 25, 2010, 21:50 Обнаружил, что в системной таблице "sqlite_master" в БД хранится описание создания всех таблиц (create table...).
Это мне в помощь. Видимо надо делать в ручную - командами sql. Спасибо участникам темы. Название: Re: как скопировать БД? Отправлено: Denjs от Сентябрь 26, 2010, 00:00 Обнаружил, что в системной таблице "sqlite_master" в БД хранится описание создания всех таблиц (create table...). ух ты ^_^ )))Это мне в помощь. Видимо надо делать в ручную - командами sql. Спасибо участникам темы. а в разделе документации http://www.sqlite.org/ есть много чего интересного )))) заглядывайте )... Название: Re: как скопировать БД? Отправлено: Marat(Qt) от Сентябрь 26, 2010, 02:05 Обнаружил, что в системной таблице "sqlite_master" в БД хранится описание создания всех таблиц (create table...). ух ты ^_^ )))Это мне в помощь. Видимо надо делать в ручную - командами sql. Спасибо участникам темы. а в разделе документации http://www.sqlite.org/ есть много чего интересного )))) заглядывайте )... Название: Re: как скопировать БД? Отправлено: Jo от Сентябрь 27, 2010, 19:06 Тоже возникала подобная задача.
Как сделать на с++: http://www.sqlite.org/backup.html но именно средствами Qt не знаю.. Название: Re: как скопировать БД? Отправлено: alex-v от Сентябрь 27, 2010, 19:20 все просто. В системной таблице sqlite_master - вся информация для экспорта (параметры таблиц и индексов).
|