我正在编写一个简单的基于 Golang 的 Redshift DataLoader。我必须使用 Redshift Copy From S3 命令作为 Prepared 语句,以便我可以将凭据作为参数的一部分传递。
我看到 lib/pq 没有正确解析 SQL 模板。任何想法将不胜感激
COPY_FROM_S3 = `
COPY {{.stageTable}}
FROM $1
WITH CREDENTIALS AS $2
DELIMITER $3
IGNOREBLANKLINES ACCEPTINVCHARS BLANKSASNULL
EMPTYASNULL ACCEPTANYDATE ESCAPE MAXERROR 50
STATUPDATE ON
`
stmt , _ := redshiftDB.Prepare(COPY_FROM_S3)
stmt.Exec(s3File, awsCreds, delimter)
获取语法错误
panic: pq: syntax error at or near "$1"
goroutine 1 [running]:
最佳答案
lib/pq 确实正确地解析了它,问题是您正在创建一个无效的查询模板,首先:{{.stageTable}}
是正式的 templates , 第二:美元 ($1) 表示法不适用于 FROM 语句中的表名,不确定其他 **$** 是否有效
关于GoLang 复制命令准备好的语句不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446879/