数据处理9.1 - 从文件夹中读取多个文件并根据名称拆分它

时间:2013-10-08 05:47:27

标签: datastage

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

外部文件阶段使用类似于

的外部命令
grep -Han ^ /pathtofile/#pFileMask# > /dev/null

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

这将生成3列 文件名 电话号码 ALLDATA

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

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

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

希望这有帮助

相关问题