いくつかのテーブルとデータを含むデータベースがあります。データベースをインポートするために、クエリ
LOAD DATA INFILE <file_name> INTO TABLE <table_name>;
テーブルごとに使用されます。データベースは一時テーブルを介してインポートされ、データベースには大きなデータが含まれているため、時間がかかります。データが増えると、インポートには無限の時間遅延がかかります。この問題を解決するにはどうすればよいですか?
public void updateDeviceTables(Connection server) throws SQLException
{
final Connection DestConn = server;
try
{
PreparedStatement psInsert;
final PreparedStatement psTrapDest = DestConn
.prepareStatement("select * from TEMP_TABLE_NAME where PRIMARY_KEYID=? ");
psTrapDest.setInt(1, OldID);
final ResultSet rsTrapDest = psTrapDest.executeQuery();
while (rsTrapDest.next()) {
psInsert = DestConn.prepareStatement(SQLQueries.INSERT_TABLE_DETAILS);
psInsert.setInt(1, NewID);
psInsert.setObject(2, rsTrapDest.getObject("Column2"));
psInsert.setObject(3, rsTrapDest.getObject("Column3"));
psInsert.executeUpdate();
psInsert.close();
psInsert = null;
}
rsTrapDest.close();
}
catch (final Exception e)
{
}
}
これは、データが一時テーブルにインポートされた後にテーブルを更新するために使用するサンプルコードです。データベース内のすべてのテーブル(17テーブル)に対して同じ手順が繰り返されました。デバッグが executeUpdate()でスタックしました。