Informatica中的Command Task

Informatica中的Command Task用于在工作流期间运行Unix或Shell命令。您可以使用此任务在数据加载后移动、复制或删除文件等。在本文中,我们将通过一个示例向您展示如何在Informatica中使用Command Task。

对于这个Informatica Command Task示例,我们将使用下面的显示文本文件数据(Employee表)。从下面的屏幕截图中,您可以看到源表有15条记录。

目标表是Employee File。正如您所看到的,它是一个空表

Informatica中的Command Task示例

在开始配置Informatica中的Command Task将数据从平面文件加载到SQL Server之前。首先,我将连接到Informatica存储库服务。为此,我们需要提供Admin Console凭据。所以,请提供在安装Server时指定的适当用户名和密码。

步骤1:为Informatica Command Task创建源定义

成功连接后,请导航到Source Analyzer来定义您的源。如前所述,我们将使用本地文件系统中的Employee表作为我们的源定义。所以,请导航到“Source”菜单并选择“Import from File..”选项。

选择“Import from File..”选项后,将打开一个名为“Open Flat File”的新窗口。请从本地文件系统中选择Employee.txt文件,然后单击“Open”按钮。我建议您参考Flat File Source文章来理解后续步骤。

从下面的屏幕截图中,您可以观察到我们新创建的平面文件源。

提示:我们已经在之前的文章中解释了导入文本文件涉及的步骤。所以,请参考Flat File Source来理解。

步骤2:为Command Task创建目标定义

请导航到Target Designer来定义Informatica Command Task目标。在此示例中,我们使用现有的SQL表(Employee File)作为目标定义。您可以参考Create a Target Table来理解创建目标定义的流程。

步骤3:在Informatica中为Command Task创建映射

要创建新映射,请导航到菜单栏中的“Mappings”菜单,然后选择“Create..”选项。

Command Task in Informatica 7

选择“Create..”选项后,将打开一个名为“Mapping Name”的新窗口。我将“m_SQLEmp”作为映射名,然后单击“OK”按钮。

Command Task 8

将Employee源定义从“Flat File Sources”文件夹拖放到映射设计器。一旦您拖动源,Power Center designer会自动为您创建Source Qualifier Transformation

Command Task in Informatica 9

接下来,将目标定义(Employee File)从“Targets”文件夹拖放到映射设计器。然后,使用“Autolink..”选项将源限定符与目标定义连接。

Command Task in Informatica 10

在关闭映射之前,让我们通过转到“映射”菜单栏并选择“验证”选项来保存和验证映射。

步骤4:为Command Task创建工作流

完成Command Task Mapping的创建后,我们需要为其创建工作流。PowerCenter Workflow manager提供了两种创建工作流的方法。

在此Informatica Command Task示例中,我们将手动创建工作流。为此,请导航到“Workflows”菜单并选择“Create”选项。这将打开“Create Workflow”窗口。请提供一个唯一的名称(wf_CommandEx),并保留默认设置。

创建完工作流后,下一步是为我们的映射创建会话任务。

步骤4(a):为Command Task创建Session

有两种类型的会话

对于这个Informatica Command Task示例,我们创建了一个非可重用Session。要创建非可重用Session,请导航到“Tasks”菜单并选择“Create”选项。

请为此Session提供一个唯一的名称。这里,我们将其命名为“s_CommandEx”。单击“Create”按钮后,将打开一个名为“Mappings”的新窗口。在这里,您需要选择要与此Session关联的Mapping,即“m_CommandEx”。

双击Session任务将打开“Edit Tasks”窗口。我们必须在mappings选项卡中配置源和目标连接。首先,让我们通过单击“EmployeeFile”来配置目标连接。

在Connections中,单击Relational类型旁边的Arrow按钮,然后选择Target Database(Target)。

现在,我们需要配置源连接。请单击“Sources”文件夹中存在的“SQ_Employee”。

  • Source File directory:它将使用默认目录,但您可以通过提供完整路径来更改目录。
  • 源文件名:它会自动检测。如果未检测到,请指定文件名及扩展名。
Command Task in Informatica 16

接下来,导航到“Workflows”菜单并选择“Validate”选项来验证Informatica Command Task Workflow。

Command Task in Informatica 17

步骤4(b):在Informatica中创建Command Task

要创建Command Task,首先转到“Task Developer”选项卡。接下来,导航到“Tasks”菜单并选择“Create”选项。

选择“Create”选项后,将打开一个名为“Create Task”的新窗口。首先,选择Command Task,为此Task提供一个唯一的名称,然后单击“Create”按钮。在这里,我们将其命名为“cmd_CopyFile”。

Command Task in Informatica 19

单击Create按钮将为您创建一个Command Task

Command Task in Informatica 20

双击Informatica Command Task将打开以下窗口。在General选项卡中,我们可以将Command Task重命名为一个更有意义的名称。请不要忘记为Task提供有效的描述。

在Properties选项卡中,有一个名为

  • Fail Parent if this task fails:请勾选此选项。如果此Command Task失败,则它将导致工作流失败。

在Commands选项卡中,您必须提供将在该工作流中使用的命令。请单击“New”按钮添加新命令。

我们将Copy Command字段重命名。接下来,单击Arrow添加命令。

Command Task in Informatica 24

它会打开一个空间来编写您的命令。对于这个例子,我们使用Copy命令将Employee File从Source Files复制到target files。

接下来,导航到“工作流”菜单并选择“验证”选项以验证工作流。

如果观察工作流,首先,我们启动工作流。然后,它将运行Session任务,将数据从文本文件加载到SQL表中。数据传输后,Informatica Command Task会将Employee File从源复制到目标。

现在,让我启动工作流。为此,请导航到“Workflows”菜单并选择“Start Workflow”选项。

Command Task 27

让我们打开 SQL Server Management Studio 并编写以下 SQL 查询。

现在您可以在默认目标位置看到Employee文件。

Informatica中的Command Task示例2

您也可以在Session Task中应用该功能,而不是创建单独的Command task。让我从工作流中删除Command task来演示这一点。

Command Task 30

双击Session task,然后转到“Components”选项卡。

  • Pre-Session Command:此命令在Session之前执行
  • Post-Session Command:此命令在Session完成后执行
  • Post-Session Failure Command:如果Session任务失败,它将执行

对于这个例子,我们将创建一个需要在Session完成后执行的命令(Post-Session)。在Type下拉列表中,我们有三个选项。让我选择Non-reusable command。

Command Task in Informatica 32

单击New字段。

接下来,单击Arrow字段来编写命令。

Command Task 34

对于这个例子,我们使用Move命令将Employee File从Source Files移动到target files。

Command Task 35

让我运行Informatica Command Task Workflow看看。如您所见,Source文件夹下没有Employee。

并且目标文件夹中有这个employee文件。