为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕勒3428872 2023-04-17 15:27:54
这是我的代码。目前,我只是阅读了 CSV 文件的内容。我需要使用 Go 语言应用程序将此 CSV 文件迁移到 MSSQLpackage mainimport (    "encoding/csv"    "log"    "os")func main() {    rows := readOrders("Ec2Instances.csv")}func readOrders(name string) [][]string {    f, err := os.Open(name)    if err != nil {        log.Fatalf("Cannot open '%s': %s\n", name, err.Error())    }    defer f.Close()    r := csv.NewReader(f)    r.Comma = ';'    rows, err := r.ReadAll()    if err != nil {        log.Fatalln("Cannot read CSV data:", err.Error())    }    return rows}我希望将 CSV 文件专门写入“MSSQL 数据库”。我已经安装了 MSSQL 和 SSMS 软件。我如何访问这些并将数据写入其中?
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

看起来你已经成功了一半!

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

为此,您需要为该数据库找到一个 golang 驱动程序(denisenkom/go-mssqldb看起来值得一试,甚至还有一个简单的示例)并遵循godatabase/sql包(尤其是包示例)建立的模式。

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

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)

    }

  }

}


查看完整回答
反对 回复 2023-04-17
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信