ホームページ >Java >&#&チュートリアル >PreparedStatement を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?

PreparedStatement を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-29 11:16:12778ブラウズ

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatement?

PreparedStatement を使用した MySQL への複数の行の挿入

MySQL テーブルに多数の行を効率的に挿入しようとすると、従来の PreparedStatement アプローチでは制限に遭遇する可能性があります。挿入する行数はPreparedStatementであらかじめ決められています。

挿入プロセスを最適化するために、MySQL は次のようなバッチ挿入構文を提供します。

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]

バッチ挿入には PreparedStatement を使用します

使用PreparedStatement バッチ挿入の手順は次のとおりです。

  1. addBatch() を使用します。このメソッドは、データの各行をバッチに追加します。
  2. バッチ処理を実行するには、executeBatch()メソッドを使用します。

サンプルコード:

public void save(List<Entity> entities) throws SQLException {
    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
    ) {
        int i = 0;

        for (Entity entity : entities) {
            statement.setString(1, entity.getSomeProperty());
            // ...

            statement.addBatch();
            i++;

            if (i % 1000 == 0 || i == entities.size()) {
                statement.executeBatch(); // Execute every 1000 items.
            }
        }
    }
}

バッチ挿入を実行する場合は、一定の行数ごとに実行することをお勧めします。例: 1000)。これは、一部の JDBC ドライバーまたはデータベースにはバッチの長さに制限がある場合があるためです。

関連資料:

  • JDBC チュートリアル - PreparedStatement の使用
  • JDBC チュートリアル - バッチ更新のための Statement オブジェクトの使用

以上がPreparedStatement を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。