Informatica Cloud DB2 for i cdc 连接类型 SQL 覆盖不起作用
Posted
技术标签:
【中文标题】Informatica Cloud DB2 for i cdc 连接类型 SQL 覆盖不起作用【英文标题】:Informatica Cloud DB2 for i cdc connection type SQL Override not working 【发布时间】:2021-07-16 12:59:10 【问题描述】:Informatica Cloud 的源是 I cdc 的 DB2 类型。很少有表在其列名中包含#。如果使用名称中包含 # 的列名称运行映射,则映射将失败。
示例:如果有一个包含 First#Name 列的 Employee 表,则使用 SQL 覆盖
为了消除列名中的#,尝试使用SQL Override 为列名取别名。
使用了一个包含同一个表的列列表的选择语句。相同的示例 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;
-
如果这不能解决问题,请不要提及任何 sql 覆盖并仅连接所需的列。 Informatica 应该自动构建 sql 并获取数据。
如果以上两个都不起作用,那么您需要更改 DB2 中的一些设置,以便处理列名中的特殊字符。我没有对此进行测试,因此无法保证。
【讨论】:
【参考方案2】:Select First#Name AS First_Name,Last#Name AS Last_Name,Column3,Column4,Column5,Column6,Column7,Column8 FROM Employee;
SQL 查询的方式应该是除了需要时没有空格,并且整个查询应该出现在一行中。
从查询中删除所有空格(除了下面提到的那些)和换行符。这将解决问题。
可以留下空格的地方:
-
SELECT 语句之后
在 FROM 关键字之前
在 FROM 关键字之后
对有特殊字符的列进行别名时,AS关键字前后(这里将使用2个空格,一个在AS关键字之前,一个在AS关键字之后)
【讨论】:
以上是关于Informatica Cloud DB2 for i cdc 连接类型 SQL 覆盖不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ibm_cloud 上的 db2 中编写 sql 查询
使用 PHP Cloud Foundry 应用程序连接到 IBM zOS 系统/DB2 表
列出 DB2 Warehouse on Cloud 中的 SQL 语句历史记录