GoLang 复制命令准备好的语句不工作

标签 go amazon-redshift

我正在编写一个简单的基于 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/

相关文章:

google-app-engine - 如何在结构中存储结构?

go - 在 Go 中检查 nil 和 nil 接口(interface)

go - 如何帮助 Go 测试找到自定义类型声明?

Go 内存分配——新对象、指针和逃逸分析

sql - 组上的 Amazon Redshift Sum 窗口函数

amazon-redshift - 限制 Amazon Redshift 中架构的大小

amazon-redshift - 从 MySQL 到 Redshift 的近实时 ETL

go - 在 golang 中保存随机状态

python - Python-警告: Unexpected Error: <class 'IndexError' >

amazon-web-services - 如何在 RedShift/ParAccel 中测量磁盘上的表空间