使用 flyway 占位符生成 sql 语句
Posted
技术标签:
【中文标题】使用 flyway 占位符生成 sql 语句【英文标题】:Generate sql statements with flyway placeholders 【发布时间】:2020-12-13 04:45:59 【问题描述】:我试图将一些 sql 插入语句保存到文件中以用于测试。 我想为此使用flyway placeholders,但我找不到。
Java 中的一些示例:
var sqlTXT = sql.insertInto(table("TBLNAME"))
.set(field("strCol"), field("strVal").toString())
.set(field("placeHolderCol"), field(inline("$flyway:user")))
.getSQL(ParamType.INLINED);
这将产生如下 SQL 字符串:
insert into TBLNAME (strCol, placeHolderCol) values ('strVal', '$flyway:user')
我正在寻找这样的东西
insert into TBLNAME (strCol, placeHolderCol) values ('strVal', $flyway:user)
所以flyway可以替换$flyway:user
并插入用户名。
有没有办法像这样渲染 sql 还是我必须“手动”完成?
【问题讨论】:
【参考方案1】:Flyway 的占位符与任何其他“供应商特定”SQL 语法没有什么不同,jOOQ 不支持开箱即用,因此plain SQL templating 有答案。
随便用
field("$flyway:user")
不要使用DSL.inline()
,它用于创建"inline values"(例如字符串文字)。
【讨论】:
以上是关于使用 flyway 占位符生成 sql 语句的主要内容,如果未能解决你的问题,请参考以下文章