一个groovy脚本,实现的效果为在DataGrip的查询结果中复制单列的时候,自从拼成('val1','val2','val3')格式。
我看csdn上有仁兄搞了个但是要积分才能下载,就自己实现了一下(也不是,GPT帮我写的,感谢GPT)。
导入Database Tools and SQL > data > extractors,即可使用。
使用时记得选择In-Condition。
本文由作者wolgy首发于稀土掘金。
代码如下
/*
* Available context bindings:
* COLUMNS List<DataColumn>
* ROWS Iterable<DataRow>
* OUT { append() }
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(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 = "\""
NEWLINE = System.getProperty("line.separator")
def printRow = { values, valueToString ->
values.eachWithIndex { value, idx ->
def str = valueToString(value)
def q = str.contains(SEPARATOR) || str.contains(QUOTE) || str.contains(NEWLINE)
OUT.append(q ? QUOTE : "")
.append(str.replace(QUOTE, QUOTE + QUOTE))
.append(q ? QUOTE : "")
.append(idx != values.size() - 1 ? SEPARATOR : NEWLINE)
}
}
def selectedColumnValues = []
ROWS.each { row ->
selectedColumnValues.add(row.value(COLUMNS[0]))
}
def quotedSelectedColumnValues = selectedColumnValues.collect { value ->
def stringValue = FORMATTER.formatValue(value, COLUMNS[0])
FORMATTER.isStringLiteral(value, COLUMNS[0]) ? QUOTE + stringValue + QUOTE : stringValue
}
def formattedString = "(" + quotedSelectedColumnValues.join(SEPARATOR) + ")"
OUT.append(formattedString)