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