나는 다음과 같은 명령을 통해 MySQL 데이터베이스로 95기가바이트 CSV 파일 (MySQL은 5.1.36)을 업로드하려고 해요 :95 GB의 CSV 파일을 MySQL MyISAM 테이블에 업로드합니다. 데이터 infile : CSV 엔진을 대체할까요?
CREATE TABLE MOD13Q1 (
rid INT UNSIGNED NOT NULL AUTO_INCREMENT,
gid MEDIUMINT(6) UNSIGNED NOT NULL ,
yr SMALLINT(4) UNSIGNED NOT NULL ,
dyyr SMALLINT(4) UNSIGNED NOT NULL ,
ndvi DECIMAL(7,4) NOT NULL comment 'NA value is 9',
reliability TINYINT(4) NOT NULL comment 'NA value is 9',
ndviquality1 TINYINT(1) NOT NULL ,
ndviquality2 TINYINT(1) NOT NULL ,
primary key (rid),
key(gid)
) ENGINE = MyISAM ;
LOAD DATA INFILE 'datafile.csv' INTO TABLE MOD13Q1 FIELDS TERMINATED by ',' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(gid, yr, dyyr, ndvi, reliability,
ndviquality1, ndviquality2
) ;
나는 순간에 DOS를 통해이 스크립트를 실행 해요,하지만 데이터베이스 응답하지 않습니다. 작은 CSV 파일 (1.5GB)에서도 정상적으로 작동합니다. 이 파일 크기에서 작동합니까?
이 작업을보다 효율적으로/더 빠르게 수행하는 방법에 대한 권장 사항이 있습니까? 엔진 = CSV가 대안이 될까요? (색인 생성이 활성화되지 않았습니다. -> 쿼리가 너무 느리게 실행될 수 있습니까?)
업데이트 팁
감사합니다, 그것은했다!
mysql> LOAD DATA INFILE 'E:\\AAJan\\data\\data.csv' INTO TABL
E MOD13Q1
-> FIELDS TERMINATED by ','
-> LINES TERMINATED BY '\r\n'
-> IGNORE 1 LINES
-> (gid, yr, dyyr, ndvi, reliability,
-> ndviquality1, ndviquality2
-> ) ;
Query OK, -1923241485 rows affected (18 hours 28 min 51.26 sec)
Records: -1923241485 Deleted: 0 Skipped: 0 Warnings: 0
mysql>
희망 사항은 데이터를 여러 조각으로 나누는 것을 피하는 데 유용합니다.
@ Mark : tokyo cabinet은 키/값 DBM이므로 아무 것도 할 수 없습니다. IMHO – RageZ