这是我的代码第一部分的片段
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
file, err := os.Open("Account_balances.csv")
if err != nil {
fmt.Println("Error", err)
return
}
defer file.Close()
reader := csv.NewReader(file)
record, err := reader.ReadAll()
if err != nil {
fmt.Println("Error", err)
}
for value:= range record{ // for i:=0; i<len(record)
fmt.Println("", record[value])
}
}
我想编写使用golang将csv文件保存在任何数据库(即sql,SQLite或postgresql)中的代码。
答案 0 :(得分:2)
每个数据库引擎都有不同的方式以优化的方式导入CSV。您应该使用它们而不是编写自己的方法来读取CSV和批量插入记录。
参考文献:
MySQL:https://dev.mysql.com/doc/refman/5.7/en/load-data.html
PgSQL:https://www.postgresql.org/docs/current/static/sql-copy.html
答案 1 :(得分:2)
Go MySQL驱动程序支持从文件加载:
请参阅https://github.com/go-sql-driver/mysql#load-data-local-infile-support和https://godoc.org/github.com/go-sql-driver/mysql#RegisterLocalFile。
RegisterLocalFile将给定文件添加到文件白名单中,以便这样做 它可以被&#34; LOAD DATA LOCAL INFILE&#34;使用。另外 您可以允许使用DSN参数的所有本地文件 &#39; allowAllFiles =真&#39;
filePath := "/home/gopher/data.csv" mysql.RegisterLocalFile(filePath) err := db.Exec("LOAD DATA LOCAL INFILE '" + filePath + "' INTO TABLE foo") if err != nil { ...
答案 2 :(得分:0)
您可以使用pgfutter之类的工具将csv数据导入PostgreSQL数据库。