golang gorm lib执行sql文件的最佳解决方案

时间:2018-01-03 09:13:14

标签: go go-gorm

Mabye有人用gorm lib执行更简单的代码执行sql文件吗?

// CARRIERS IMPORT
err := DB.Session.Model(model.Carriers{}).Count(&carriers).Error
if err != nil {
    panic(err)
} else if carriers == 0 {
    path, err := filepath.Abs("./dumps/carriers.sql")
    if err != nil {
        panic(err)
    }
    file, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }
    DB.Session.Model(model.Carriers{}).Exec(string(file))
}

1 个答案:

答案 0 :(得分:0)

当执行一个充满语句的SQL文件时,现有的sql命令行客户端不只是将文件内容发送到服务器。相反,他们会解析文件并发出单独的声明。

如果要复制此功能,则需要自己将文件解析为单个语句并执行它们。

最简单的方法是调用外部命令行客户端。 例如,对于postgresql,您应该exec类似psql [connection args] -f <sql file>