postgresql - 如何使用 Go 从 csv 复制到 postgres?

标签 postgresql csv go

我想将我的大型 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/

相关文章:

python - 属性错误 : 'module' object has no attribute 'reader'

mysql - 将 .csv 导入 MySQL 时如何跳过中间行

go - golang 上的公历包

windows - 使用 Go 在 Windows 资源管理器中显示文件?

django - 使用 Django ORM 进行快速移动平均计算

sql - 如何在 Postgresql 中加入 array_agg 列的 View ?

sql - 具有计数聚合函数的列表列

regex - 分割 CSV 文件中的字符串

golang代码插入/替换

sql - PostgreSQL 查询以查找具有匹配数据的行并组合这些行中的列