0

我正在使用 DataStage 9.1,我向您展示了我的任务,以找到一些最佳实践。

我需要从一个文件夹中读取多个 csv 文件(所有文件),并根据文件名的最后两个字符在十个不同的作业中执行 ETL。然后我的问题是:

目的是:文件 fileXX 将用作 ETL 的输入,ETL 将填充 tabXX,fileYY 填充 tabYY 等等。

1)如何从一个文件夹中读取多个文件?2)如何根据文件名切换工作,或者更好地如何根据输入文件名的价值开发参数化工作?

有人可以给我一些建议,让我以最好的方式开始我的工作吗?

4

3 回答 3

1

1)要从您那里读取多个文件,您可以使用外部源并将 a 作为参数作为返回文件夹中文件的命令(如果您在 datastage 服务器中使用 UNIX 或 Linux,则为 ls)2)切换也许您可以使用一堆过滤器,或者您可以为每种类型的文件使用多个外部源,例如,如果您使用的是 UNIX 或 Linux,您可以使用参数“ls path_of_the_directory/*XX.csv”创建一个外部源,一个使用“ ls path_of_the_directory/*YY.csv" 因为 ls 支持通配符,但我不知道在 Windows 中是否有它的等价物

于 2013-10-08T16:18:12.083 回答
1

要读取多个文件,您可以创建参数化的文件名。考虑您的文件名是 FileXX(将 XX 部分作为参数,例如,让我们使用参数 Var,因此您的文件名将是 File#Var#)。将值传递给该参数。您也可以对 Table 执行相同的公式。如果您想一起读取所有文件,那么您可能需要在 ini 文件中传递值/您可能需要创建不同的源阶段。

于 2014-01-22T07:15:41.693 回答
1

基于 Random 的原始答案和 Linux 功能;

使用类似于以下的外部命令的外部文件阶段

grep -Han ^ /pathtofile/#pFileMask# > /dev/null

H = file name
a = forces reading of file as text
n = line number

这将生成 3 列 FileName LineNumber AllData

然后,您可以通过转换器并通过文件名或单独的文件掩码过滤到单个链接

然后,您必须将 AllData 列分开,最简单的方法是使用列导入阶段和每种文件类型的模式文件。

同样,这是基于 Random 的原始答案,因此任何功劳都应归功于他/她

希望这可以帮助

于 2015-12-09T19:51:16.257 回答