Что нового

[Данные, строки] Копирование таблиц из одного файла базы sqlite в другой

captain

Новичок
Сообщения
2
Репутация
0
Привет.

Есть две базы данных хранящихся в разных файлах. Предположим dot.db и newdot.db.
Необходимо все таблицы из базы dot.db скопировать в newdot.db. Имена таблиц обеих баз данных есть и хранятся в массивах, первым элементом которых является размер этого массива.
Единственное, что я придумал это считывать инфу построчно из одной таблицы БД и писать в другую.
Но мне кажется есть гораздо более простое и элегантное решение позволяющее полностью скопировать таблицу из одной БД в другую.

Подскажите, пожалуйста, как лучше это сделать.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
SQLite Management посмотри в справке.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Код:
#include <SQLite.au3>
_SQLite_Startup()
$sTable_source = 'test_in' ; название исходной таблицы
$sTable_dest = 'test_out' ; название таблицы-получателя
$sDb_1 = 'c:\1.db' ; путь к первой базе
$sDb_2 = 'c:\2.db' ; путь ко второй базе

_SQLite_Open($sDb_1) ; открываем базу-источник
_SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS ' & $sTable_source & '(a, b);') ; создаем таблицу-источник, если ее еще не создано
_SQLite_Exec(-1, 'INSERT INTO ' & $sTable_source & ' VALUES ("1", "a");') ; добавляем данные
_SQLite_Exec(-1, 'INSERT INTO ' & $sTable_source & ' VALUES ("2", "b");') ; добавляем данные
_SQLite_Exec(-1, 'ATTACH DATABASE "' & $sDb_2 & '" AS FileDatabase;') ; подключаем вторую базу
_SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS ' & $sTable_dest & '(a, b);') ; создаем таблицу-получатель, если ее еще не создано
_SQLite_Exec(-1, 'INSERT INTO ' & $sTable_dest & ' SELECT * FROM ' & $sTable_source & ';') ; вставляем данные из таблицы-источника в таблицу-получатель
_SQLite_Close(-1) ; закрываем базу

_SQLite_Shutdown()

Названия таблиц должны различаться!
 
Верх