1

Java を使用して 1000 万行のテキスト ファイルを MySQL テーブルに入力しようとしています。ファイルには空白文字で区切られた 2 つの列がありLOAD DATA INFILE、2 つの列を持つテーブルにデータを入力するために使用しています。最初の列には整数が含まれ、2 番目の列には varchar が含まれます。ただし、データベースに渡されるデータは 1000 万ではなく、9981770 です。テーブルの構造は次のとおりです。

st.execute("create table if not exists test 
    (id bigint NOT NULL, word varchar(80)) 
    ENGINE=MYISAM PARTITION BY KEY(word) PARTITIONS 40;");

挿入を高速化するためにテーブルを分割しています。また、特定の単語の ID を取得したいので、単語列に後でインデックスを追加したいためです。ただし、これが問題を引き起こすとは思いません。LOAD DATA INFILEコマンドは次のとおりです。

st.execute("LOAD DATA LOCAL INFILE '"+PATH+
    "' INTO TABLE test FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n';");

この問題を解決する方法についてアドバイスをいただければ幸いです。

4

3 に答える 3

0

次の 2 つの推奨事項があります。

  1. エラーについては、エラー ログをチェックアウトする必要があります。
  2. 出力をファイルに記録し、「err」文字を grep します。

    猫の負荷ログ | grep -i エラー

一部の行が挿入されなかった理由を説明するエラーが見つかるはずです。

于 2013-01-29T00:43:41.360 に答える
0

これらが原因である可能性があると思います:

  • テキスト ファイルの一部の行が空白で区切られていません
  • 一部の行のテキストが長すぎる可能性があります
  • 最初の列の一部が実際には整数ではない可能性があります
于 2013-01-29T01:01:41.387 に答える