我想将我的大型 csv 文件复制到 Postgres。 Schema create table doe(firstname text, lastname text, phone text);
CSV 文件
名字|姓氏|电话
约翰|母鹿|55-55-555
简|母鹿|66-66-666
开始
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
cmd := "psql"
args := fmt.Sprintf("-U postgres -d test -c \"\\copy doe from '%s' delimiter '|' csv header;\"", os.Args[1])
if err := exec.Command(cmd, args).Run(); err != nil {
panic(err)
}
println("Ok")
}
现在有一个错误
./copy /tmp/test.csv panic: exit status 2
goroutine 1 [running]: main.main() /tmp/copy.go:21 +0x16b
我做错了什么?如果在控制台中运行
psql -U postgres -d test -c "\copy doe from '/tmp/test.csv' delimiter '|' csv header;"
COPY 2
最佳答案
func main() {
cmd := "psql"
args := []string{"-U", "postgres", "-d", "test", "-c", fmt.Sprintf(`\copy doe from '%s' delimiter '|' csv header;`, os.Args[1])}
v, err := exec.Command(cmd, args...).CombinedOutput()
if err != nil {
panic(string(v))
}
println("Ok")
}
关于postgresql - 如何使用 Go 从 csv 复制到 postgres?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44262711/