だからここに私の質問があります。データの巨大なテキスト ファイルがあり、明らかに Java プログラムを使用して、このすべてのデータを mySQL データベースにすばやく入力する必要があります。私の唯一の問題は、データが特定の ID で識別されることです。これらの ID の一部は重複しており、互いに同じ情報がすべて含まれています。並べ替えとわかりやすくするために、これらをすべて削除したいと思います。
これについて最善の方法は何ですか?誰かが助けてくれるなら、私はそれを感謝します!
ありがとう。
だからここに私の質問があります。データの巨大なテキスト ファイルがあり、明らかに Java プログラムを使用して、このすべてのデータを mySQL データベースにすばやく入力する必要があります。私の唯一の問題は、データが特定の ID で識別されることです。これらの ID の一部は重複しており、互いに同じ情報がすべて含まれています。並べ替えとわかりやすくするために、これらをすべて削除したいと思います。
これについて最善の方法は何ですか?誰かが助けてくれるなら、私はそれを感謝します!
ありがとう。
データの読み取り中にハッシュマップまたはハッシュセットがあります。ID が hasmap/hashset に存在するかどうかを確認し、存在する場合は続行します。それ以外の場合は、セット/マップに入力して挿入します。
余談: hashmap と hashset の違いは、hashset は値のみを受け取り、hashmap はキー値を取ることです。ただし、Hashset 自体はメモリ内のハッシュマップを使用し、値のダミー オブジェクトを挿入するだけです。 参照: HashMap と Hashtable の違いは?
ハッシュセットの例:
HashSet<Integer> distinctIds = new HashSet<Integer>();
MyRowData rowdata;
int rowID;
while((rowdata = this.getRowData())!=null ) // or however you iterate over the rows using reader etc
{
rowID = rowdata.getRowID();
if(!distinctIds.contains(new Integer(rowID)))
{
distinctIds.add(rowID);
inertDataInMysql(rowdata); //however you insert your data here
System.out.println("Adding " + rowID);
}
}
バッチ挿入を使用して、多数の行に対して可換挿入を実行することにより、コードをさらに高速化できます。見る:
データベースにデータを追加するときに、ID に主キーを追加するだけです。そうすれば、繰り返される ID 行がデータベースに追加されることはありません。お役に立てれば。