去 postgres 重构 pq CopyIn 到 pgx CopyFrom

问题描述

我正在尝试重构代码,以便使用 pgx 而不是 pq 连接到 postgres 数据库。 我已经尝试了很多方法,但我不断收到错误:不正确的二进制数据格式 (SQLSTATE 22P03)。请在下面找到原始工作代码和我的重构尝试。我做错了什么?

// pq code
stmt,_ := txn.Prepare(pq.CopyIn(table,"id","client_id","channel_id","feature"))
for _,user := range users{
    _,err = stmt.Exec(stringA,stringB,integer64,pq.Array(stringArray))
}

//pgx code
rows := make([][]interface{},len(users))
ix := 0
for _,user := range users{
    rows[ix] = []interface{}{stringA,stringArray}
    ix++
}

_,err = txn.CopyFrom(context.Background(),pgx.Identifier{table},[]string{"id","feature"},pgx.CopyFromRows(rows))

编辑:我从 pgx 文档中得到了一个提示:CopyFrom 要求所有值都使用二进制格式。

问题是我的 id(在上面的代码中记为 stringA)。它被创建为:

stringA := uuid.New().String()

我用 pgtype 增强了它,现在它就像一个魅力:

newStringA := &pgtype.UUID{}
_ := idPgtype.Set(stringA)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...