태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'bulk'에 해당되는 글 1건

  1. 2009.06.08 mysql에 대용량 데이터 import 하기

mysql에 Bulk로 대용량 데이터를 한꺼번에 import하는 경우가 있다.

여기에서 대용량이라함은 적어도 천만건 이상 정도의 데이터를 가정하고 이야기한다.



mysql은 다양한 Data import 방법을 제공하고 있다.


1. query파일로 import하기.

insert table_name values( value1...);

이런 쿼리들로 이루어진 sql문 파일을 mysql console에서 source 명령어로  import 할 수 있다.



mysql>source "file name";



이 방법은 아마도 가장 느린 방법이 아닐까 생각이 된다.

또한 query문으로 이루어진 파일은 용량이 크기 때문에  핸들링하기가 쉽지 않다.

가끔 max_allowed_packet  size를 초과한다는 에러도 나온다.

이건 my.cnf에서 이 parameter를 적당히 늘려주면 에러는 없어진다.



2. CSV 포멧으로 import하기

mysqlimport 명령 혹은 load data local infile 명령으로 CSV포멧을 import하는 방법이다.

LOAD DATA LOCAL INFILE '/importfile_path.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3);


이 방법의 장점은 불필요한 쿼리를 제외한 데이터와 SPACER만 들어가기 떄문에 상대적으로 쿼리 파일보다 파일 사이즈가 작다.
또한 이 방법이 현재까지 해본 방법중에는 가장 빠른것 같다.

천만건 정도를 서버에 import하는데 15분정도가 걸린다.

단점은 CVS파일이름이 바로 DB Table 이름이 되 버리기 때문에 많은 Table을 핸들링 해야 하는 경우에는 각각 파일을 핸들링 해야 한다.



결론은 복잡한 데이터를 다양한 DB에 넣을경우는 쿼리 파일로 하는것이 편한것이고,

단순한 많은 양의 데이터를 import할때는 CSV포멧으로 처리하는것이 빠르고, 편할것이다.


Posted by Breeze.Kang

댓글을 달아 주세요