【问题标题】:Need to map csv file to target table dynamically需要将 csv 文件动态映射到目标表
【发布时间】:2014-08-05 09:50:25
【问题描述】:

我有几个 CSV 文件,并且在数据库中有与 CSV 同名的相应表(与具有适当数据类型的 CSV 的列相同)。因此,每个 CSV 都会在数据库中有一个表。

我不知何故需要动态映射这些。运行映射后,所有 csv 文件中的数据都应传输到相应的表中。
我不希望每个 CSV 都有不同的映射。

这可以通过 informatica 实现吗?
感谢您的帮助。

【问题讨论】:

  • 正如 navjot 所说,我建议您为每个文件编写一个 bteq 脚本,这将比映射到加载文件具有更好的性能并且可以动态处理,您也可以编写一个脚本来传递作为输入的列数,它将为特定类型的文件生成一个快速加载脚本。

标签: database csv informatica informatica-powercenter


【解决方案1】:

PowerCenter 不提供开箱即用的此类功能。除非源文件和目标表的结构相同,否则您需要定义单独的源/目标定义并创建使用它们的映射。

但是,您可以使用Stage Mapping Generator 自动为每个文件生成映射。

【讨论】:

    【解决方案2】:

    我的理解是你有不同列布局的 mant CSV 文件,你需要将它们加载到数据库中的适当表中。

    方法 1:如果您使用任何 RDBMS,您应该有某种导入选项。探索基于 csv 文件创建表的路线。这是一项手动任务。

    方法 2:打开 csv 文件并使用 header 编写formuale 以生成 create tbale 语句。在您的数据库中执行公式结果。因此,您将创建许多表。现在,使用 informatica 读取 CSV 并导入所有表并加载到表中。

    方法 3:使用 Informatica。您需要进行大量编码才能动态创建动态映射。

    建议的解决方案: 映射1: 1.读取CSV文件,将头信息传递给java转换 2. java 转换应该规范化标题列并将其拆分为行。您可以将它们写入文本文件 3. 现在您拥有文本文件中的所有列。阅读此文本文件并使用 SQL 转换在数据库上创建表

    映射 2

    现在,表格可用了,您需要读取不包括表头的CSV文件,并通过映射1创建的SQL转换(插入语句)将数据加载到上表中

    您可以对所有 CSV 文件采用这种方法。我最后还没有尝试过这个解决方案,但我确信上述方法会奏效。

    【讨论】:

      【解决方案3】:

      如果您不使用任何转换,最好使用数据库的 Import 选项。 (例如 Teradata 中的 bteq 脚本)。但是,如果您要进行转换,则必须创建与您拥有的文件数量一样多的源和目标。

      另一方面,您可以在一个映射中实现这一点。 1. 为单个映射中的每个文件(即 Source-Transformation-Target)创建一个单独的流。 2. 使用目标加载计划来选择首先加载哪个文件。 3. 为该映射配置会话中的文件名和对应的数据库表名。

      【讨论】:

        【解决方案4】:

        如果所有映射(如果您必须单独创建它们)都相同,请使用间接文件方法。在映射选项卡下的会话属性中,源选项..,您将获得此选项。默认选项将直接更改为间接。

        我现在没有工具来探索更多并清楚地指导您。但是在 Informatica 中探索这种间接文件加载类型。我相信这会解决这个要求。

        【讨论】:

        • 间接文件法只有在所有文件的结构相同时才能解决。
        【解决方案5】:

        我在 Informatica 中编写了一个工作流程来执行此操作,但一些复杂的步骤是在数据库内部处理的。工作流监视文件夹中的新文件。一旦它看到构成提要的所有文件,它就会开始处理提要。它在时间戳文件夹中进行备份,然后将提要中文件中的所有数据复制到 Oracle 表中。 Oracle 过程开始工作,然后将数据从 Oracle 表传输到其相应的目标登台表,最后传输到数据仓库。因此,如果我必须添加新文件或提要,我只需在配置表中进行更改。不需要对 Informatica 对象或 db 对象进行任何更改。所以简短的回答是肯定的,这是可能的,但它不是一个开箱即用的功能。

        【讨论】:

          猜你喜欢
          • 2022-11-09
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 2020-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多