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 查询

IBM Cloud 上的 Db2 的 SQL 格式是啥?

使用 PHP Cloud Foundry 应用程序连接到 IBM zOS 系统/DB2 表

列出 DB2 Warehouse on Cloud 中的 SQL 语句历史记录

IBM Db2 on Cloud 中使用的 SQL 方言是啥

从 DB2 数据库的两个表中提取数据并加载到临时表中