与 golang 驱动程序一起使用的雪花占位符格式

Posted

技术标签:

【中文标题】与 golang 驱动程序一起使用的雪花占位符格式【英文标题】:snowflake placeholder format to use with the golang driver 【发布时间】:2020-06-18 17:36:53 【问题描述】:

我无法找到用于 golang 雪花驱动程序的占位符格式。 https://godoc.org/github.com/snowflakedb/gosnowflake 这里的文档目前没有说明任何关于它的内容,他们的示例 https://github.com/snowflakedb/gosnowflake/tree/81a8e973392a6d20381ab3797de63ba584f8d0d6/cmd 也没有使用它。我应该使用“?”还是“%s”?

【问题讨论】:

【参考方案1】:

Snowflake 的 Go 驱动程序 implements golang database/sql interfaces。

假设通过占位符格式您正在谈论SQL statement bind variables,您可以使用standard variable syntax supported by Snowflake:?未命名,位置),或:name命名):

位置样式示例:

db.ExecContext(ctx, `
    delete from Invoice
    where
        TimeCreated < ?
        and TimeCreated >= ?;`,
    endTime,
    startTime,
)

命名样式示例:

db.ExecContext(ctx, `
    delete from Invoice
    where
        TimeCreated < :end
        and TimeCreated >= :start;`,
    sql.Named("start", startTime),
    sql.Named("end", endTime),
)

gosnowflake 模块文档 carry an indirect reference 对此进行了说明,但由于它们实现了 database/sql 接口,因此它们隐式支持将常规和命名参数与语句一起发送到 Snowflake 服务。

【讨论】:

以上是关于与 golang 驱动程序一起使用的雪花占位符格式的主要内容,如果未能解决你的问题,请参考以下文章

golang 新人求助 关于格式占位符的问题

golang fmt格式“占位符”

golang fmt格式“占位符”

golang中fmt的'占位符'使用

通过重新格式化现有文件名来重命名文件 - 与 -replace 运算符一起使用的替换字符串中的占位符

Golang入门到项目实战 | golang格式化输出