表输入支持两种不同的动态SQL方法:变量替换和从传入流中插入数据。
变量替换
这是你目前已在表输入配置:你把$ {}变量的地方,并在步骤初始化,该值作为文本进行粘贴到SQL。
由于所有步骤在转换中同时初始化,因此您的Javascript步骤没有时间设置值。在PDI中,无法在同一转换中设置和使用变量。从步骤
插入数据的第二种方法是用于通过选择在表输入“插入数据从步骤”选项的源极步骤。在这种模式下,表格输入从选定的步骤中取一行,并将字段(按顺序)插入插入问号(?)的SQL中。通常它需要一行,但您可以选择执行每行。
这种方式应该为您的方案工作:
- 将一个生成行的开始步骤,并将其设置产生1行。
- 连接到Javascript步骤。
- 在Javascript步骤中,将返回变量指定为底部网格中的输出字段,它将被添加到流中。
- 在表输入,选择在“从步骤插入数据”
- 在SQL的JavaScript的步骤,插入?在变量的位置。如果值是字符串,则可能需要单引号:WHERE column ='?'。
- 预览转换以查看结果,表输入的预览由于依赖关系而被禁用。
注:
- 步骤1和可能不需要如图2所示,我不知道,如果JS步骤由自身产生的行。我喜欢明确这一点,通常将生成行命名为“生成1行”。
- 如果你有一个现有的流或多个字段中插入,您可以使用选择值步骤把字段需要将它们插入SQL命令。
已经有点不同做你的一步,但其对表输入 错误,请参阅图(第二张图片) –
@AlexanderChandra我的回答部分:在你的第二张照片,我看到周围的没有引号?在你的表格中输入。您可能会收到错误“未知列......”。尝试单引号。 – Cyrus