sql-server - 如何使用 golang 导入 csv 并保存在 MSSQL 数据库中?
问题描述
这是我的代码。目前,我只是阅读了 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
看起来值得一试,甚至还有一个简单的示例)并遵循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)
}
}
}
推荐阅读
- linq - 如何在第一个之后从文件中删除所有行项目
- angular - 在数组打字稿中检查相同的 courseID
- typo3 - TYPO3 v10.1.0 无法安装
- php - 在 PHP 中使用函数输出 HTML
- angular - 在 Angular 中从 Froala 2.9 升级到 3.0.x 后损坏
- c++ - 按钮中带有标签的 GTK 3 C++ 图标
- vue.js - nativescript axios - 我在哪里可以在调试模式下看到我的 XHR 请求
- python - python每周导入csv
- neo4j - Neo4j:查询以查找具有最多关系的节点
- javascript - 如何允许用户更改他们的游戏密钥?