title: How to insert multiple data at once
body: <p>I know that Insert multiple data at once more efficiency:</p>
  
  <pre><code>INSERT INTO test(n1, n2, n3) 
  VALUES(v1, v2, v3),(v4, v5, v6),(v7, v8, v9);
  </code></pre>
  
  <p>How to do that in golang?</p>
  
  <pre><code>data := []map[string]string{
     {"v1":"1", "v2":"1", "v3":"1"},
     {"v1":"2", "v2":"2", "v3":"2"},
     {"v1":"3", "v2":"3", "v3":"3"},
  }
  //I do not want to do it
  for _, v := range data {
      sqlStr := "INSERT INTO test(n1, n2, n3) VALUES(?, ?, ?)"
      stmt, _ := db.Prepare(sqlStr)
      res, _ := stmt.Exec(v["v1"], v["v2"], v["v3"])
  }
  </code></pre>
  
  <p>Use string splice, but it's not good. db.Prepare more safer, right?</p>
  
  <pre><code>sqlStr := "INSERT INTO test(n1, n2, n3) VALUES"
  for k, v := range data {
      if k == 0 {
          sqlStr += fmt.Sprintf("(%v, %v, %v)", v["v1"], v["v2"], v["v3"])
      } else {
          sqlStr += fmt.Sprintf(",(%v, %v, %v)", v["v1"], v["v2"], v["v3"])
      } 
  }
  res, _ := db.Exec(sqlStr)
  </code></pre>
  
  <p>I need a function safer and efficient insert mulitple data at once.</p>