我正在编写一个简单的基于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]:
答案 0 :(得分:0)
lib / pq确实正确地解析了它,问题是你正在创建一个无效的查询模板,首先:{{.stageTable}}
用于正式templates,第二个:美元( $ 1 )表示法不适用于 FROM 语句中的表名,不确定其他** $ **是否有效