登录
首页 >  Golang >  Go问答

使用golang从csv文件导入数据到MSSQL数据库的方法

来源:stackoverflow

时间:2024-03-15 12:51:28 375浏览 收藏

本篇文章给大家分享《使用golang从csv文件导入数据到MSSQL数据库的方法》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

这是我的代码。目前,我只是读取了 csv 文件的内容。我需要使用 go 语言应用程序将此 csv 文件迁移到 mssql

package main

import (
    "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 软件。我如何访问这些并向其中写入数据?


解决方案


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

您的示例代码看起来将从指定文件中读取 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)
    }
  }
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>