golang sql.Tx Exec带单引号-语句需要0个参数
我正在使用pq,我有一个如下功能:golang sql.Tx Exec带单引号-语句需要0个参数,go,Go,我正在使用pq,我有一个如下功能: func UpdateTable(tx *sql.Tx) error { _, err := tx.Exec(` copy public.mytable FROM 's3://mybucket/mytable' credentials 'aws_access_key_id=$1;aws_secret_access_key=$2' DELIMITER AS '|' GZIP ESCAPE;`, os.Get
func UpdateTable(tx *sql.Tx) error {
_, err := tx.Exec(`
copy public.mytable FROM
's3://mybucket/mytable' credentials
'aws_access_key_id=$1;aws_secret_access_key=$2' DELIMITER AS '|'
GZIP ESCAPE;`,
os.Getenv("AWS_ACCESS_KEY_ID"),
os.Getenv("AWS_SECRET_ACCESS_KEY"))
if err != nil {
return err
}
return nil
}
尝试运行该函数时,我收到错误消息
pq: got 2 parameters but the statement requires 0
这是由于SQL语句中的原始字符串和单引号造成的吗?我可以使用字符串文字吗?您是否尝试过使用
?
而不是$X
?PostgreSQL的占位符是$X,但是的,我甚至尝试过?您是否只尝试了双引号?COPY
不支持查询参数,因此,在将查询传递给Exec
之前,您需要手动设置查询的格式。我在(“从表中选择*,其中名称=?”,名称)
,(“从表中选择*,其中名称=”?”,名称)
,(“从表中选择*,其中名称=“$”,名称)
,(“从表中选择*,其中名称=“$1”,名称)
但它已通过=>解决(“从姓名为$1的人员中选择*”)
。