英文:
How to execute mssql script directly from file with Golang
问题
我一直在寻找上述问题的答案,但没有找到。如果这是一个重复的问题,请原谅。基本上,我正在尝试直接从文件中执行一个 SQL 脚本,但是我一直收到“Incorrect syntax near ''”的错误。
func AnotherDatabase() (sql.Result, error) {
rc, err := os.Open("./myscript.sql")
if err != nil {
return nil, err
}
buf := new(bytes.Buffer)
buf.ReadFrom(rc)
contents := buf.String()
db, err := sql.Open("mssql", "mydatabase")
if err != nil {
return nil, err
}
defer db.Close()
res, err := db.Exec(contents)
if err != nil {
return nil, err
}
return res, nil
}
以上是要翻译的内容。
英文:
I have been looking around for the answer to the question above with no luck. Excuse me if it is a duplicate. So basically I am trying to execute a sql script directly from file but I keep on getting the " Incorrect syntax near ''. " error
func AnotherDatabase() (sql.Result, error) {
rc, err := os.Open("./myscript.sql")
if err != nil {
return nil,err
}
buf := new(bytes.Buffer)
buf.ReadFrom(rc)
contents := buf.String()
db, err := sql.Open("mssql", "mydatabase")
if err != nil {
return nil,err
}
defer db.Close()
res, err := db.Exec(contents)
if err != nil {
return nil,err
}
return res,nil
}
答案1
得分: 0
我已经意识到导致问题的非法字符可能是扩展ASCII字符,所以我使用了下面的方法从文件内容中去除不必要的字符:
func stripCtlAndExtFromBytes(str string) string {
b := make([]byte, len(str))
var bl int
for i := 0; i < len(str); i++ {
c := str[i]
if c >= 32 && c < 127 {
b[bl] = c
bl++
}
}
return string(b[:bl])
}
如此处所述:https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#Go
英文:
I have realized the illegal character causing issues was probably an extended ASCII character so I used the below method to strip off unnecessary characters from the file contents :
func stripCtlAndExtFromBytes(str string) string {
b := make([]byte, len(str))
var bl int
for i := 0; i < len(str); i++ {
c := str[i]
if c >= 32 && c < 127 {
b[bl] = c
bl++
}
}
return string(b[:bl])
}
as stated here https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#Go
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论