执行行 SQL 脚本无法读取 .sql 文件。我收到这个错误

Execute row SQL script can't read .sql file. I am getting this error

2018/02/01 11:20:00 - 执行行 SQL 脚本。0 - 我们在输入流中找不到字段 [C:\Users\abc\Documents\xyz\query\record.sql] !

我的步骤涉及-

  1. 获取变量-输入
  2. 执行行 SQL 脚本 - 我正在尝试读取我的查询文件
  3. 文本文件输出

在执行行 SQL 脚本中,我在 SQL 字段名中给出了 C:\Users\abc\Documents\xyz\query\record.sql。

编辑

澄清一下,我希望作业读取查询(从文件中)并自行提供文本输出(运行 并输出 select 查询结果)。

我 copying/pasting 来自 执行行 SQL 脚本 步骤的两个配置选项的文档解释:

SQL field name: The field that either contains the SQL to execute or optionally specifies the path to a file that contains SQL to execute

Read SQL from file: If checked, then the SQL field name option specifies a file that contains SQL to execute, otherwise the SQL field name option specifies the actual SQL to execute. (Available since 5.0)

所以你不能在SQL字段名选项中指定一个文件路径,但是你可以从流中指定一个包含文件路径的字段到所需的 sql。否则,您应该在此选项中定义一个包含 sql 文本的字段。

希望对您有所帮助。

编辑 1

因为你需要从一个文件执行select查询,我会推荐步骤Dynamic SQL row,如下图。

我认为它会完成工作。

编辑 2

下面只是做动态sql执行。首先,您需要将 sql 查询加载到流中。之后,每个sql都会执行一个作业。在此作业中,设置了一个包含 sql 查询的变量,然后执行转换。这个转换基本上是一个 Input Table 步骤,用之前设置的 sql 变量动态填充 sql 框。

现在我想这就是您要找的东西。希望对你有帮助。

要阅读 SQL table,请使用步骤 Table input,然后将您的查询复制粘贴到大文本区域。

请注意,除非您的查询中有复杂的连接,否则您很少需要导入 sql 脚本,这要归功于非常方便的 Get SQL Statement 按钮。

从不带参数的 select 语句开始。一旦成功,将变量替换为 ${variable},并勾选 Replace variable in script 复选框。 (警告由于 java SQL 准备语句存在一些限制,例如,您可能没有 table 名称中的变量)。

如果要从文件中获取脚本,首先读取文件中带有Table input的一列和select这一列在Insert data from step的[=10] =].

如果您的文件中仍然有可变参数,或者在您 select 来自的 table 的名称中,则使用 Modified JavascriptRegex evaluator,或用它们的值替换变量的任何其他步骤,并通过 Insert data from step.

将生成的 SQL 脚本提供给 table

如果您有一堆 file.sql 需要阅读,请不要忘记选中 Execute for each row 按钮。

希望这对您有所帮助。