次のコマンドを使用して、95 GB のCSVファイルをMySQLデータベース (MySQL 5.1.36)にアップロードしようとしています。
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.5 GB) で問題なく動作します。このファイルサイズでうまくいきますか?
これをより効率的/迅速に行う方法について何か推奨事項はありますか? engine = 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>
これが、データをチャンクに分割することを避けている他の人にとって役立つことを願っています.