8

次のコマンドを使用して、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>

これが、データをチャンクに分割することを避けている他の人にとって役立つことを願っています.

4

5 に答える 5

3

簡単な方法ではありません。データをチャンクに分割してからインポートする必要があります...

于 2009-11-20T07:45:29.490 に答える
1

インポートするときは、すべての制約を無効にする必要があります。それとは別に、それは適切に機能するはずであり、しばらく、おそらく数時間かかることに注意してください.

于 2009-11-20T07:37:14.407 に答える
0

MySQLTuner - Perl で記述された高性能 MySQL チューニング スクリプトを使用してみてください。これは、MySQL の構成を支援し、パフォーマンスと安定性を向上させるための推奨事項を作成するのに役立ちます。

于 2014-09-24T17:59:43.830 に答える
0

BCP? .................................. あっ、待って。いずれにせよ、それは何らかのバルク トランザクションになることは問題ではありません。チャンクが必要です。yout ログ セグメント スペースがいっぱいになるのを避けるために必要です。ロック数の制限。一度に 100 万を超えるものは多すぎます。したがって、BCP の最もよく知られているバッチ サイズは 10,000 レコードです!

于 2009-11-21T23:56:37.040 に答える
0

RageZ と Sarfraz の回答に同意しますが、追加することがあります。

1. データベース キャッシュを増やし、いくつかの mysql オプションを再構成すると役立つ場合があります (RAM 使用量)。

これを見てください:

Mysql データベースのパフォーマンス チューニング

write_bufferread_bufferquery_cache_sizeおよびその他の RAM および I/O 関連のオプションに焦点を当てる必要があると思います。

2. おそらく、より高速なストレージ デバイスが必要です。今何を使っていますか?

このような大規模なデータベースの場合、高速で最新のハードディスクを備えた RAID-5 アレイを使用する必要があります。

日常のタスクにはこの構成で十分かもしれませんが、バックアップやクライシスの状況についてはどうでしょうか?

このような大規模なデータベースのバックアップの作成と復元には、マシン上で時間がかかりすぎます。単純な挿入インポートには 18 時間かかります。

95GB のテキスト ファイルが非常に大きいことはわかっていますが、このような単純な操作を最大 2 ~ 3 時間で実行できるハードウェアを使用する必要があると思います。

于 2012-11-30T22:27:10.460 に答える