SQLite | SQLite 명령어 | 덤프를 가져와서 데이터베이스 재구축 (.read 명령)

.dump 명령을 사용하여 데이터베이스에 저장된 테이블과 같은 구조와 데이터를 SQL 문 형식으로 저장한 파일을 .read 명령을 사용하여 덤프한 내용을 가져와서 같은 내용의 데이터베이스를 만들 수 있다. 여기에서는 .read 명령을 사용하여 덤프 파일을 가져 오는 방법에 대해 설명한다.

.dump 명령을 사용하여 데이터베이스를 덤프하는 방법은 데이터베이스 덤프 (.dump 명령)을 참조한다.

 

덤프 파일 가져오기

덤프 파일을 새로운 데이터베이스에서 가져오려면 .read 명령을 사용한다. 형식은 다음과 같다.

.read FILENAME

인수에는 가져올 파일명을 지정한다. 지정한 파일은 덤프 결과가 저장된 파일과 같이 SQL 문이 작성된 것을 지정해야 하다. 파일을 로드되면 파일에 저장된 SQL 문이 순차적으로 실행된다.

그럼 실제로 덤프 파일을 가져와 보겠다. 기존 데이터베이스의 내용을 덤프한 내용이 작성되어 있는 파일을 준비했다. 파일명은 dump.txt입니다.

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE user (name text, old integer, address text);
INSERT INTO user VALUES('devkuma',28,'Seoul');
INSERT INTO user VALUES('kimkc',22,'Busan');
INSERT INTO user VALUES('araikuma',32,'Seoul');
INSERT INTO user VALUES('happykuma',23,'Seoul');
INSERT INTO user VALUES('mykuma',23,'Daejeon');
CREATE TABLE color (id integer, name text);
INSERT INTO color VALUES(1,'Red');
INSERT INTO color VALUES(2,'Blue');
INSERT INTO color VALUES(3,'White');
CREATE INDEX nameindex on user (name);
COMMIT;

다음은 가져오기를 수행할 새 데이터베이스 newdb.sqlite3을 만든다. 새 데이터베이스이므로 저장된 것이 아무것도 없는 상태이다.

sqlite3 newdb.sqlite3
$ sqlite3 newdb.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> 

그러면 .read 명령을 사용하여 파일을 가져온다.

.read ./dump.txt
sqlite> .read ./dump.txt
sqlite> 

가져오기를 수행하면 파일에 작성된 SQL 문이 순서대로 실행된다. 이번 경우에는 테이블이 2개 만들어 지고, 두개의 테이블에 데이터가 저장된다.

테이블이 작성되었는지 여부를 확인해 보면, 두 개의 테이블이 생성되어있는 것을 알 수 있다.

.tables
sqlite> .table
color  user 
sqlite> 

다음은 테이블에 데이터가 저장되어 있는지 확인한다. 두 개의 테이블에 가져오기를 한 파일에 작성된 대로 데이터가 저장되어 있다.

select * from user;
sqlite> select * from user;
devkuma|28|Seoul
kimkc|22|Busan
araikuma|32|Seoul
happykuma|23|Seoul
mykuma|23|Daejeon
sqlite> 
select * from color;
sqlite> select * from color;
1|Red
2|Blue
3|White
sqlite> 

이와 같이 데이터베이스를 덤프한 파일을 새 데이터베이스에서 가져오기를 하면 데이터베이스를 다시 구축할 수 있다.




최종 수정 : 2019-11-13