컴퓨터 개발/기타2010. 10. 12. 10:15
sqlite3 에서 대량파일 insert 를 처리해야 할 경우 insert 문을 계속 사용할 경우 I/O가 많이 발생하여 엄청난 시간을 소비하게 된다. 이에 BULK insert를 찾다가..
먼저 sqlite3의 구분자를 먼저 찾느다.
[yhlee@yhlee ~]$ sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> .show .separator
     echo: off
  explain: off
  headers: off
     mode: list
nullvalue: ""
   output: stdout
separator: "|"
    width:
sqlite>
내가 쓰는 시스템에서는 구분자를 "|"로 사용하기에 파일의 내용을 "|"를 구분자로 사용하는 파일로 바꾼다.
예를들어 아래와 같이 구분자로 dbdata.txt 로 파일을 만들고
44|92 
35|94 
43|94
195|49
...
echo "create table mytable ( col1 int, col2 int);" | sqlite3 mydb.db
echo ".import dbdata.txt mytable" | sqlite3 mydb.db
를 해주면 된다.
[yhlee@yhlee ~]$ echo ".show .separator" | sqlite3
     echo: off
  explain: off
  headers: off
     mode: list
nullvalue: ""
   output: stdout
separator: "|"
    width:
[yhlee@yhlee ~]$ echo "create table mytable( col1 int, col2 int );" | sqlite3 mydb.db
[yhlee@yhlee ~]$ echo ".import dbdata.txt mytable" | sqlite3 mydb.db
[yhlee@yhlee ~]$ echo "select * from mytable;" | sqlite3 mydb.db
44|92
35|94
43|94
195|49
[yhlee@yhlee ~]$

원문 : http://en.w3support.net/index.php?db=so&id=364017
Posted by yhlee