我正在尝试编写一个小的groovy脚本,该脚本从csv文件读取数据,评估数据并将数据写入SQL DB。
从csv行读取的某些数据可以为空-在这种情况下,插入内容应将NULL传递给数据库。出于性能和安全性考虑,我在eachWithIndex迭代之前构建了一个sqlQuery,并在迭代内部填充了参数。
def sqlQuery="""INSERT INTO database (
[Id],
[document],
[extension],
[token]
) VALUES (?, ?, ?, NULL)"""
jobList.eachWithIndex{ it, i ->
eIDenter = it[0]
eDoc = it[1]
eExt = it[2]
sqlParams = [eID, eDoc, eExt]
...
}
尽管我可以简单地将NULL值传递给迭代中的列,这些列始终为空(因为它们在csv文件中不存在),但我不确定groovy中的绑定参数如何工作。如果csv文件中不存在数据,则变量“ eExt”可以填充或为null。
我如何确保bind参数为空时显式将NULL传递给数据库?
您可以使用Elvis
运算符:
jobList.eachWithIndex{ it, i ->
....
eExt = it[2] ?: 'NULL'
....
}