Informatica Cloud DB2 for i cdc 连接类型 SQL 覆盖不起作用

Informatica Cloud DB2 for i cdc connection type SQL Override not working

Informatica Cloud 的源是 I cdc 的 DB2 类型。很少有 table 在其列名中包含 #。如果映射 运行 的列名称中包含 #,则映射失败。

示例:如果有一个员工 table 的列是 First#Name 然后使用 SQL Override

因此,要从列名中删除 #,请尝试使用 SQL 覆盖以别名列名。

使用了包含相同 table 的列列表的 select 语句。 SQL 语句示例:

Select First#Name as First_Name
       Last#Name  as Last_Name
       .
       .
       .
       .
       .
       .
       .
       Employee;

但是,仍然会使用 # 符号获取列名,这会破坏映射。

任何解决方案如何在列名称中为#添加别名?

你有两个选择-

  1. 您可以用双引号“col_name”将列名括起来。
Select "First#Name" as First_Name
       "Last#Name"  as Last_Name
       .
       Employee;
  1. 如果这不能解决问题,请不要提及任何 sql 覆盖并仅连接必需的列。 Informatica 应自动构建 sql 并获取数据。
  2. 如果以上两个都不行,那么你需要更改DB2中的一些设置来处理列名中的特殊字符。我没有测试过这个所以我不能保证这个。
Select First#Name AS First_Name,Last#Name  AS Last_Name,Column3,Column4,Column5,Column6,Column7,Column8 FROM Employee;

SQL 查询应该采用这样一种方式,除了需要的时候没有空格,并且整个查询应该出现在一行中。

从查询中删除所有空格(下面提到的除外)和换行符。这将解决问题。

哪里可以留空格:

  1. SELECT语句后
  2. 在 FROM 关键字之前
  3. FROM关键字后
  4. 为具有特殊字符的列设置别名时,在 AS 关键字前后(这里将使用 2 个空格,一个在 AS 关键字之前,第二个在 AS 关键字之后)