包含空格的Scriptella和CSV列标题

时间:2014-06-30 20:32:40

标签: csv etl scriptella

我正在尝试将数据从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),但到目前为止没有运气。

谢谢!

1 个答案:

答案 0 :(得分:1)

不幸的是,变量名中的特殊符号无法转义,但Scriptella提供了一种实用方法来实现类似的效果。见EtlVariable.getParameter

在您的情况下,只需使用?{etl.getParameter('column one')}

即可