Как импортировать таблицы из другой базы данных в 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"