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

8aqjt8rx  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(179)

Informatica Cloud的源类型为DB2for I cdc。只有少数表的列名中包含#。如果Map是在列名中包含#的情况下运行的,则Map将失败。
示例:如果有一个Employee表包含First#Name列,则使用SQL Override
因此,为了消除列名中的#,尝试使用SQL Override为列名设置别名。
使用了包含同一个表的列列表的select语句。同一个表的示例SQL语句:

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

但是,仍然使用#符号提取列名,这破坏了Map。
有没有办法在列名中把#改为_的别名?

guicsvcw

guicsvcw1#

你有两个选择-
1.可以用双单位“col_name”括起列名。

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

1.如果这不能解决问题,请不要提及任何sql覆盖,并且只连接必需的列。Informatica应该自动构建sql并获取数据。
1.如果以上两个都不起作用,那么你需要改变DB2中的一些设置,以便处理列名中的特殊字符。我还没有测试过,所以我不能保证这一点。

q9yhzks0

q9yhzks02#

Select First#Name AS First_Name,Last#Name  AS Last_Name,Column3,Column4,Column5,Column6,Column7,Column8 FROM Employee;

SQL查询应采用这样的方式,即除了需要时没有空格,并且整个查询应在一行中显示。
从查询中删除所有空格(除了下面提到的空格)和换行符。这样就可以解决问题。
可留出空间的位置:
1.在SELECT语句之后
1.在FROM关键字之前
1.在FROM关键字之后
1.为具有特殊字符的列取别名时,在AS关键字之前和之后(此处将使用2个空格,一个在AS关键字之前,另一个在AS关键字之后)

相关问题