2018/02/01 11:20:00 - 执行行SQL脚本0 - 我们在输入流中找不到字段[C:\ Users \ abc \ Documents \ xyz \ query \ record.sql]!
我的步骤涉及 -
在执行行SQL脚本中,我在SQL fieldname中给出了C:\ Users \ abc \ Documents \ xyz \ query \ record.sql。
修改
澄清,我希望作业能够读取查询(来自文件)并自行输出文本(运行并输出选择查询结果)。
答案 0 :(得分:2)
我正在从执行行SQL脚本步骤中的两个配置选项的文档中复制/粘贴说明:
SQL字段名称:包含要执行的SQL的字段,或者可选地指定包含要执行的SQL的文件的路径
和
从文件中读取SQL :如果选中,则SQL字段名选项指定包含要执行的SQL的文件,否则SQL字段名选项指定要执行的实际SQL。 (自5.0起可用)
因此,您无法在 SQL字段名称选项中指定文件路径,但可以从流中指定包含所需sql的文件路径的字段。否则,您应在此选项中定义包含sql文本的字段。
希望它有所帮助。
编辑1
由于您需要从文件中执行选择查询,我建议您执行步骤Dynamic SQL row
,如下图所示。
我认为它会完成这项工作。
编辑2
以下只是执行动态sql。首先,您需要将sql查询加载到流中。之后,将为每个sql执行一个作业。在此作业中,设置包含sql查询的变量,然后执行转换。这个转换基本上是一个Input Table
步骤,用以前的set sql变量动态填充sql框。
现在我认为这就是你要找的东西。希望它有所帮助。
答案 1 :(得分:0)
要读取SQL表,请使用步骤Table input
,然后将查询复制粘贴到大文本区域。
请注意,除非您的查询中有复杂的连接,否则您很少需要导入sql脚本,这要归功于非常方便的Get SQL Statement
按钮。
从没有参数的select语句开始。一旦它工作,用$ {variable}替换变量,并勾选Replace variable in script
复选框。 (警告由于java SQL Prepared Statement存在一些限制,例如,表名中可能没有变量)。
如果您想从文件中获取脚本,请首先阅读列中包含Table input
的文件,然后在Insert data from step
的{{1}}中选择此列。
如果您的文件中仍有可变参数,或者是您要选择的表的名称,请使用Table input
或Modified Javascript
或任何其他步骤来替换变量他们重视,并通过Regex evaluator
将结果SQL脚本提供给表。
如果您要阅读一堆file.sql,请不要忘记查看Insert data from step
按钮。
希望这有帮助。