データベース/SQL SQL ステートメントのバッチ処理
質問:
Java での SQL ステートメントのバッチ処理Database/sql パッケージを使用するのは簡単です。 Go で同様の機能を実現するにはどうすればよいですか?
: 回答:
Go のデータベース/SQL パッケージを使用すると、db.Exec 関数を使用して SQL ステートメントをバッチ処理できます。これは可変数の引数を受け取ります。 Go でバッチ処理を実装する方法は次のとおりです。
SQL ステートメントを構築します。
SQL ステートメントを含む文字列を、プレースホルダーを使用して作成します。挿入したい値。例:
stmt := "INSERT INTO my_table (field1, field2, field3) VALUES (?, ?, ?)"
引数を展開します:
挿入する値に対して個別のスライスを作成します。各行について、これらのスライスに値を追加します。
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) }
バッチの実行:
db.Exec 関数を使用して実行します。引数を渡すバッチ化された SQL ステートメント
_, err := db.Exec(stmt, valueArgs...)
このメソッドは、単一のネットワーク ラウンドトリップでバッチ操作を実行するため、大量のデータを効率的に挿入できます。
以上がGo の「database/sql」パッケージで SQL ステートメントをバッチ処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。