- 背景:日常工作中使用 DataGrip,有时需要将查的列值作为下一张表的 in 查询条件,借助下面的脚本可以提供效率
1、借助 sdkman 安装 Groovy SDK
2、将 Groovy SDK 添加至 IntelliJ IDEA (参考链接:Add Groovy SDK to IntelliJ IDEA)
3、在 IntelliJ IDEA 中编写 Groovy(参考链接:官方示例)
/*
* Available context bindings:
* COLUMNS List<DataColumn>
* ROWS Iterable<DataRow>
* OUT { append() }
* FORMATTER { format(row, col); formatValue(Object, col) }
* TRANSPOSED Boolean
* plus ALL_COLUMNS, TABLE, DIALECT
*
* where:
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
* DataColumn { columnNumber(), name() }
*/
SEPARATOR = ","
QUOTE = "'"
/**
* 将选择数据转为一行
* <p>建议选择一列转为一行,以逗号分隔
* 转后结果 例如:820890, 820888, 820053, 820052
*/
first = true
ROWS.each { row ->
COLUMNS.each { column ->
value = FORMATTER.format(row, column)
def isStringLiteral = value != null && FORMATTER.isStringLiteral(value, column)
def isNumber = value.isNumber() && !isStringLiteral
OUT.append(first ? "" : SEPARATOR + " ")
.append(isNumber ? " " : QUOTE)
.append(value.replace(QUOTE, QUOTE + QUOTE))
.append(isNumber ? "" : QUOTE)
first = false
}
}
4、编写完使用
参考链接:https://www.jetbrains.com/help/datagrip/2017.1/extending-the-datagrip-functionality.html?search=extending&_ga=2.158034234.1823904253.1584112760-1908885780.1558344487