2012-11-03 2 views
8

database1이라는 테이블이 t1database2이고 테이블이 t2 인 SQLite 데이터베이스가 있습니다. 테이블 t2database2에서 database1으로 가져 오려고합니다. 어떤 명령을 사용해야합니까?sqlite에서 다른 데이터베이스의 테이블을 가져 오는 방법은 무엇입니까?

+1

([다른 하나 SQLite는 DB로부터 복사 데이터]의 가능한 복제 http://stackoverflow.com/questions/2359205/copying-data-from-one-sqlite-db -다른 사람에게) –

답변

28

열기 database2 같은 것을 시도하고 명령 .schema t2와 테이블 정의를 읽을 수 있습니다.

ATTACH 'database2file' AS db2; 

다음 테이블 t2를 생성하고 데이터를 복사 : 명령으로

다음

개방 database1, attach 다른 데이터베이스 (. 또는, 테이블 정의를 읽을 수있는 다른 도구를 사용) 이상과 :

INSERT INTO t2 SELECT * FROM db2.t2; 
4

덤프 출력을 다른 db로 파이프 할 때 sqlite3 .dump 명령을 사용할 수 있습니다. 테이블 이름과 함께 선택적 인수를 취합니다.

db1=~/mydb1.sqlite 
db2=~/mydb2.sqlite 
t=t2 

sqlite3 "$db2" ".dump $t" | sqlite3 "$db1" 

두 데이터베이스에 공통 테이블이없는 경우 테이블 이름을 생략하고 모든 테이블을 복사 할 수 있습니다.

테이블이 큰 경우 INSERT를 수행하기 때문에 속도가 느려질 수 있습니다. 그들이 거대하고, 너무 느리다면 어쩌면 .import이 빠를 것입니다. 당신은 sqlite3 command-line tool

sqlite3 "$db2" ".schema $t" | sqlite3 "$db1" 
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t" 
5

셸 명령 :

sqlite3 database1 
SQLite는 셸 16,

:

sqlite> ATTACH 'database2' AS db2; 
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2; 
관련 문제