ホームページ >バックエンド開発 >Golang >Go の「database/sql」パッケージで SQL ステートメントをバッチ処理する方法は?

Go の「database/sql」パッケージで SQL ステートメントをバッチ処理する方法は?

DDD
DDDオリジナル
2025-01-02 14:07:40388ブラウズ

How to Batch SQL Statements in Go's `database/sql` Package?

データベース/SQL SQL ステートメントのバッチ処理

質問:

Java での SQL ステートメントのバッチ処理Database/sql パッケージを使用するのは簡単です。 Go で同様の機能を実現するにはどうすればよいですか?

: 回答:

Go のデータベース/SQL パッケージを使用すると、db.Exec 関数を使用して SQL ステートメントをバッチ処理できます。これは可変数の引数を受け取ります。 Go でバッチ処理を実装する方法は次のとおりです。

  1. SQL ステートメントを構築します。

    SQL ステートメントを含む文字列を、プレースホルダーを使用して作成します。挿入したい値。例:

    stmt := "INSERT INTO my_table (field1, field2, field3) VALUES (?, ?, ?)"
  2. 引数を展開します:

    挿入する値に対して個別のスライスを作成します。各行について、これらのスライスに値を追加します。

    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows) * 3)
    
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Field1)
        valueArgs = append(valueArgs, post.Field2)
        valueArgs = append(valueArgs, post.Field3)
    }
  3. バッチの実行:

    db.Exec 関数を使用して実行します。引数を渡すバッチ化された SQL ステートメント

    _, err := db.Exec(stmt, valueArgs...)

このメソッドは、単一のネットワーク ラウンドトリップでバッチ操作を実行するため、大量のデータを効率的に挿入できます。

以上がGo の「database/sql」パッケージで SQL ステートメントをバッチ処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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