반응형
출처: http://moonlighting.tistory.com/140
MySQL 테이블에 데이터를 넣는 방법 중 csv 파일을 직접 넣는 방법이 있다.
csv 파일과 DB 테이블 구조가 일치하면 아래와 같이 입력하면 된다.
1
2 |
LOAD DATA LOCAL INFILE "filePath" INTO TABLE dbName.tableName FIELDS TERMINATED BY "," ; |
만약 파일의 크기가 크고 테이블에 index가 걸려 있으면 시간이 굉장히 오래 걸릴 수 있다.
그럴 경우에는 아래와 같이 index를 먼저 해제해 주고 파일을 올린 다음 다시 index를 걸면 상당히 빠르게 테이블에 데이터를 넣을 수 있다.
1
2
3
4 |
ALTER TABLE dbName.tableName DISABLE KEYS; LOAD DATA local INFILE "filePath" INTO TABLE dbName.tableName FIELDS TERMINATED BY "," ; ALTER TABLE dbName.tableName ENABLE KEYS; |
대략 2GB 정도 되는 파일도 10분 정도로 import가 완료됐다.
만약 csv 파일 구조와 DB 테이블 구조가 다른 경우는 아래 샘플 sql 문 참조해서 import 한다.
1
2
3
4
5
6 |
LOAD DATA LOCAL INFILE 'file_name' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (column1,column2,column3, ...); |
load
data
local
infile
'불러올파일명'
into
table
입력할 테이블명 fields terminated
by
','
enclosed
by
'"'
lines terminated
by
'\n'
http://stackoverflow.com/questions/10762239/mysql-enable-load-data-local-infile
위 오류 해결 방안
You should set the option:
local-infile=1
into your [mysql] entry of my.cnf file or call mysql client with the --local-infile option:
mysql --local-infile -uroot -pyourpwd yourdbname
You have to be sure that the same parameter is defined into your [mysqld] section too to enable the "local infile" feature server side.
It's a security restriction.
반응형
'프로젝트 관련 조사 > DB' 카테고리의 다른 글
[MySQL] 최근 1주일 데이터 가져오기 (0) | 2015.11.28 |
---|---|
[MySQL] convert Unix time stamp to Epoch (0) | 2015.11.28 |
[MySQL] ISODate를 MySQL에 집어 넣기 (0) | 2015.11.12 |
[MySQL] 테이블 생성, 컬럼 추가, 삭제, 수정 (0) | 2015.11.12 |
[MySQL] Ubuntu MySQL 원격 접속 허용 (0) | 2015.11.09 |