앞에서 insert into 를 이용한 데이터 넣는 방법을 배웠다. 자료가 1, 2 개 추가 할 때는 사용할 만 하나 자료의 양이 많아지면 일일이 손으로 자료 넣기가 어려워진다. 그리고 mysql 이나 엑셀로 작성된 파일이 있고 이를 SQLite 에 다시 넣으려고 할 때도 있다. 이럴 때는 자료를 txt 파일로 만들어서 SQLite 에서 읽어 들이면 된다.

보통, SQL을 지원하는 Database Management System 에서는 txt 형으로 파일을 만드는 것을 지원한다. 엑셀에서도 txt 형으로 파일을 만들수 있다. MySQL Tutorial에 있는 것처럼 SQLite 에서도 텍스트로 된 파일을 불러올 수 있다.

우선 테이블을 만들자.
================================================================
sqlite> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(2), birth DATE, death DATE);
================================================================
그 다음 MySQL Tutorial 처럼 txt 파일을 만든다. (3.3 3.3 테이블에 자료를 넣어 보자. 에 다음 내용이 있다. ) 주의한 점은 앞에 적혀있는 name owner species sex birth death 이 부분을 제거한 다음 파일로 만들어야 한다.
===============================================================
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Dianne dog m 1998-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29
===============================================================
data.txt 라고 저장 했다. 이게 어떻게 보일지 모르겠지만. 항목 사이사이는 tab 으로 띄어져 있다. 그리고 빈 행은 없다. data.txt 파일은 SQLite 의 실행파일과 같은 디렉토리(폴더)에 놓았다.

이 것을 SQLite 로 읽기전에 세팅을 해 놓아야 한다. 지금 이 txt 파일에서는 항목을 탭으로 구분해 놓았다. 그래서 SQLite 에서 |(pipe) 로 기본적으로 구분하기 때문에 이걸 tab 으로 바꾸어 놓아야 한다. 앞의 "출력하는 모양 옵션 조절 " 이라는 글에서 수정 법을 이미 말했다.
sqlite> .separator \t
라고 고쳐야 한다.
이 제 파일을 불러올 수 있다. .import FILE TABLE 로 불러 온다. FILE 은 파일 경로이고 TABLE 은 테이블 이름이다. 여기서는 SQLite 실행파일이 있는 곳에 data.txt 가 있기 때문에 FILE 은 data.txt 이고 TABLE 이름은 pet 이다.
sqlite> .import data.txt pet
절대 끝에 세마콜론(;) 을 붙이기 말기 바란다. 이것 SQL 표준문이 아니다. SQLite 에서 제공하는 기능이다.

이제 값이 들어 갔는지 확인하면 된다.
================================================================
sqlite> select * from pet;
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Dianne dog m 1998-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29
================================================================
밑에서 2번째 데이터가 잘못 들어간 것처럼 보이는데 첫번째 필드값이 너무 길어서 그렇게만 보일 뿐이다.



 여기에서는 예제로 탭으로 띄어서 사용한 형식을 이용했다. 이 보다 더 많이 사용하는 형식은 csv 라고 해서 각 필드를 콤마(,)로 구별하는 형식이다. 그 파일은 다음과 같이 되오 있다.
============================================
Fluffy,Harold,cat,f,1993-02-04
Claws,Gwen,cat,m,1994-03-17
Buffy,Harold,dog,f,1989-05-13
Fang,Benny,dog,m,1990-08-27
Bowser,Dianne,dog,m,1998-08-31,1995-07-29
Chirpy,Gwen,bird,f,1998-09-11
Whistler,Gwen,bird,1997-12-09
Slim,Benny,snake,m,1996-04-29
===========================================
 큰 차이는 없는 형식이나 기존의 엑셀같은 스프레드쉬트나  SQL 프로그램에서 이런 형식으로 백업이나 내보내기 할 수 있다. 그래서 이 형식을 더 많이 이용한다. 이 형식으로 된 파일을 SQLite 에서 불러오기 위해서는 앞에서 사용한
sqlite> .separator \t
대신에
sqlite> .separator ","
를 이용한 후
sqlite> .import data.csv pet
만 하면된다.  (여기서 data.csv 는 저장된 파일이고 pet 은 저장될 테이블(Table)이다. 물론 pet 는 미리 만들어져 있어야 하며, csv 파일과 형식이 동일해야 한다.


최종 수정일 :  2006/11/08 18:02

작성자 : 한밀(승룡)
버전 : 0.1.1