如何使用golang导入csv并保存在MSSQL数据库中?

时间:2018-10-02 08:14:39

标签: sql-server go

这是我的代码。目前,我只是阅读CSV文件的内容。我需要使用Go语言应用程序将此CSV文件迁移到MSSQL

{{1}}

我希望将CSV文件专门写入“ MSSQL数据库”。我已经安装了MSSQL和SSMS软件。如何访问这些并将数据写入其中?

1 个答案:

答案 0 :(得分:1)

看来您已经到一半了!

您的示例代码看起来将像从命名文件中读取CSV数据。下一步将连接到MSSQL数据库实例,并从CSV数据中插入行。

为此,您需要找到该数据库的golang驱动程序(denisenkom/go-mssqldb值得尝试,甚至还有simple example),并遵循go database/sql package建立的模式(尤其是package examples)。

有效的解决方案可能看起来像这样(不起作用,但具有示范性):

import (
  "database/sql"
  _ "github.com/denisenkom/go-mssqldb"
  // ...
)

func main() {
  rows := readOrders("Ec2Instances.csv")
  insertRowsToDatabase(rows)
}

func insertRowsToDatabase(rows [][]string) {
  // Connect to the database.
  connString := "server=myserver;user id=123;password=secret;port=234"
  db, err := sql.Open("mssql", connString)
  if err != nil {
    log.Fatal("Open connection failed:", err.Error())
  }
  defer db.Close()

  // Insert the rows, omitting the first header row from the CSV.
  stmt, err := db.Prepare("INSERT INTO Ec2Instances(id, name) VALUES(?, ?)")
  if err != nil {
    log.Fatal(err)
  }
  for _, row := range rows[1:] {
    _, err := stmt.Exec(row[0], row[1])
    if err != nil {
      log.Fatal(err)
    }
  }
}