3

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

谢谢!

4

1 回答 1

1

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

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

于 2014-07-01T01:02:30.557 回答