我正在尝试将数据从CSV文件移动到数据库表中,我想在脚本中使用列标题名称。例如:
<connection id="csvin" driver="csv" url="/path/to/file.csv" />
<connection id="dbout" driver="h2" url="connection string" />
<query connection-id="csvin">
<script connection-id="out">
INSERT INTO mytable VALUES (?column one,?column five,?column eight)
</script>
</query>
我从上面得到了SQL语法错误。如果我改为使用SQL语句
INSERT INTO mytable VALUES (?1, ?5, ?8)
然后它有效。但我真的更喜欢使用列标题。由于后勤原因,我不能将列标题名称更改为不包含空格。有没有办法完成使用有空格的名称?
我尝试转义空格,引用名称,使用括号和使用unicode表示法(\u0020
),但到目前为止没有运气。
谢谢!
答案 0 :(得分:1)
不幸的是,变量名中的特殊符号无法转义,但Scriptella提供了一种实用方法来实现类似的效果。见EtlVariable.getParameter
在您的情况下,只需使用?{etl.getParameter('column one')}