피카부 RSS 태그 관리 글쓰기 방명록 다시 시작하는 개발 블로그
2021-03-09 11:05:07

대량의 내용을 데이터베이스 table에 일일이 insert 하는것은 엄청 힘든 일이다.

이런 경우 최대한 csv 형식으로 데이터를 정리하여 한번에 table에 넣는 방법을 추천한다.

 

아래는 예시로 일단 sqlite3 test.db를 만들고 그 안에 list 테이블을 만들었다

CREATE TABLE list(number INTEGER, keyword TEXT);

 

이제 .show 명령어로 해당 db의 속성을 확인하자.

sqlite> .show
     echo: off
  explain: off
  headers: off
     mode: list
nullvalue: ""
   output: stdout
separator: "|"
    stats: off
    width: 

속성에서 csv를 import 하기 위해서 확인해야 할 곳은 크게 두가지 mode와 separator이다.

먼저 .mode 명령어를 이용하여  csv 모드로 바꿔주자

.mode csv

그 후 .separator 명령어로 자신이 만든 csv의 구분자를 지정해준다.

보통 콤마나 탭 아니면 | 를 많이 사용한다.

나의 경우는 |로 되어있는데 이걸 콤마로 바꿔보겠다.

.separator ,

다시 .show로 속성 확인

sqlite> .show
     echo: off
  explain: off
  headers: off
     mode: csv
nullvalue: ""
   output: stdout
separator: ","
    stats: off
    width: 
sqlite> 

그럼 위와 같이 mode가 csv로 separator가 ,로 변경된 것을 확인할 수 있다.

 

이제 아래 내용으로 되어있는 data.csv를 table로 넣기만 하면 된다. 

1,사과
2,수박
3,딸기
4,포도
5,귤

 

.import 명령어로 data.csv 내용을 list 테이블에 넣는다.

sqlite> .import data.csv list

import 단계에서 에러가 발생하지 않았다면

sqlite> select * from list;
1,"사과"
2,"수박"
3,"딸기"
4,"포도"
5,"귤"

위처럼 전부 list테이블이 들어 간 것을 확인 할 수 있다.

 

만약 에러가 나왔다면 보통 컬럼수와 데이터수가 맞지 않는 경우가 많다.

이런 경우 해당 에러 메시지를 구글에 그대로 검색하면 해결방법을 찾을 수 있다.