我有一个像
SA-->SQ--->EXPR--->TGT
源将具有相同的结构,目标也将具有相同的结构。
有一堆文件(具有相同的结构)将通过这个映射。
所以我想使用一个参数文件,通过它我将手动为每次运行提供文件名。
如何在会话中使用参数文件获取Source filename
属性
请建议..
我有一个像
SA-->SQ--->EXPR--->TGT
源将具有相同的结构,目标也将具有相同的结构。
有一堆文件(具有相同的结构)将通过这个映射。
所以我想使用一个参数文件,通过它我将手动为每次运行提供文件名。
如何在会话中使用参数文件获取Source filename
属性
请建议..
您可以使用间接源类型,其中您的源文件基本上是一个文件列表,然后会话依次读取每个文件。
参数文件可以引用源文件名(列表)作为
$InputFile_myName=/a/b/c.list
根据 Raghav 所说,在“映射”选项卡的相关 SQ 的“源文件名”属性框中指明将保存输入文件列表的文件的名称,使文件“源文件类型”为“间接” ,在会话属性中指定。如果您已经提前知道输入文件的名称,则可以在该文件中指定它们并将该文件与工作流一起部署到您在“源文件目录”属性框中指定的位置。但是,如果您直到运行时才知道输入文件的名称,但知道文件的命名标准(例如:“Input_files_name_ABC_ ” where “" 表示可变文本,例如由某个其他进程生成的每个输入文件递增的数值),然后处理该问题的一种方法是使用会话的“组件”选项卡中可指定的会话前命令。创建一个将在该位置构建一个新文件,并使用为上述间接输入文件指定的名称,方法是使用 Unix shell(或者如果在 Windows 上运行,则 cmd shell)列出符合它们命名标准的文件并重定向列出该文件的输出。
棘手的是,该间接类型的输入文件中必须列出一个或多个文件。如果该文件为空,则工作流将失败(异常结束)。间接文件类型必须在其中列出至少一个文件(即使该文件为空)并且该文件必须存在。如果间接文件读取器没有要读取的文件,或者其中列出的文件在要读取的服务器上不存在,则工作流将失败。解决此问题的一种方法是确保始终存在符合命名标准的空文件。这可以通过在执行列表命令以构建间接文件类型列表文件之前创建一个“touchfile”来确保。在 Unix 中,您可以使用 'touch {path}/{filename}' 命令({filename} 可以是,例如,“Input_files_name_ABC_TOUCHFILE”),或者在 Windows 上,您可以将一个空字符串重定向到一个同样命名为 via cmd外壳进程。无论哪种方式,这将帮助您避免异常终止。清理该文件很容易:可以使用 Post-Session 命令删除空的 touchfile。同样地,