ホームページ >バックエンド開発 >Golang >Go で複数のデータ行を効率的に挿入するにはどうすればよいですか?

Go で複数のデータ行を効率的に挿入するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 07:36:10277ブラウズ

How Can I Efficiently Insert Multiple Data Rows in Go?

Go での効率的な複数データ挿入

データベース操作では、効率上の理由から、複数のデータ行を同時に挿入すると有利なことがよくあります。 Go では、これを実現するためのいくつかの方法が提供されています。

1 つの方法は、db.Prepare 関数を使用して準備済みステートメントを作成することです。プリペアド ステートメントを使用すると、SQL インジェクションを回避し、パフォーマンスを向上させることができます。プリペアド ステートメントを使用して 1 回の実行で複数の行を挿入するには、次の手順に従います。

  1. INSERT INTO ステートメントと値のプレースホルダーを使用して SQL 文字列を作成します。例:
sqlStr := "INSERT INTO test(n1, n2, n3) VALUES (?, ?, ?)"
  1. 挿入するデータを保持するマップのスライスを作成します:
data := []map[string]string{
   {"v1":"1", "v2":"1", "v3":"1"},
   {"v1":"2", "v2":"2", "v3":"2"},
   {"v1":"3", "v2":"3", "v3":"3"},
}
  1. スライスを反復処理します。そして、準備されたステートメントに値を追加します
vals := []interface{}{}

for _, row := range data {
    vals = append(vals, row["v1"], row["v2"], row["v3"])
}
  1. ステートメントを正しく準備するには、sqlStr から最後のカンマを削除する必要があります。
//trim the last ,
sqlStr = sqlStr[0:len(sqlStr)-1]
  1. Prepare the更新されたステートメントsqlStr.
stmt, _ := db.Prepare(sqlStr)
  1. 収集した値を使用してステートメントを実行します:
res, _ := stmt.Exec(vals...)

このアプローチを使用すると、複数のデータ行を効率的に挿入できます。安全性を確保し、データベースの実行数を減らしながらデータベースを構築します。

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

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