Как импортировать таблицы из другой базы данных в SQLite?
у меня есть базы данных SQLite с именем database1 в таблице t1 и database2 в таблице t2. Я хочу импортировать таблицу t2 С database2 на database1. Какую команду(ы) я должен использовать?
3 ответов
открыть database2 С и прочитайте определение таблицы с помощью команды .schema t2.
(Можно также использовать любой другой инструмент, который позволяет читать определение таблицы.)
database1, прикрепить другая база данных с командой:
ATTACH 'database2file' AS db2;
затем создайте таблицу t2, и скопируйте данные с помощью:
INSERT INTO t2 SELECT * FROM db2.t2;
командная оболочка:
sqlite3 database1
в оболочке SQLite:
sqlite> ATTACH 'database2' AS db2;
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;
вы можете использовать sqlite3 .dump команда для передачи вывода дампа в другую БД. Он принимает необязательный аргумент с именем таблицы.
db1=~/mydb1.sqlite
db2=~/mydb2.sqlite
t=t2
sqlite3 "$db2" ".dump $t" | sqlite3 "$db1"
если у вас нет общих таблиц в обеих базах данных, вы можете оставить имя таблицы и скопировать все таблицы.
если таблицы большие, это может быть медленным, потому что он будет делать вставки. Если они огромные, и это действительно слишком медленно, может быть .import будет быстрее. Вы можете попробовать что-то вроде
sqlite3 "$db2" ".schema $t" | sqlite3 "$db1"
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t"