ホームページ >バックエンド開発 >Golang >Go で「database/sql」を使用してバッチ SQL ステートメントを実行するにはどうすればよいですか?

Go で「database/sql」を使用してバッチ SQL ステートメントを実行するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-17 16:42:14119ブラウズ

How to Execute Batched SQL Statements in Go using `database/sql`?

database/sql を使用して Go でバッチ SQL ステートメントを実行する

問題:

Go で複数の SQL ステートメントを実行するにはどうすればよいですか? Database/sql を使用した単一データベース操作での SQL ステートメントpackage?

解決策:

database/sql パッケージは、SQL ステートメントのバッチ処理を可能にする多用途の Exec() 関数を提供します。実装方法は次のとおりです:

func BulkInsert(unsavedRows []*ExampleRowStruct) error {
    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows)*3)
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Column1)
        valueArgs = append(valueArgs, post.Column2)
        valueArgs = append(valueArgs, post.Column3)
    }
    stmt := fmt.Sprintf("INSERT INTO my_sample_table (column1, column2, column3) VALUES %s",
        strings.Join(valueStrings, ","))
    _, err := db.Exec(stmt, valueArgs...)
    return err
}

利点:

  • このアプローチでは、単一のリクエストですべてのステートメントを実行することにより、ネットワークのラウンドトリップが削減されます。
  • で示されているように、複数行のデータを挿入する場合に効率的です。たとえば。
  • Exec() 関数の可変長引数の性質を活用するため、実装は簡単です。

以上がGo で「database/sql」を使用してバッチ SQL ステートメントを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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