当使用Talend开源将数据从Db2源加载到Postgresql数据库时,Trim /空白问题

问题描述 投票:0回答:2

我们看到从DB2(源)到Postgres(目标)的表值存在问题。我在这里包含了每个组件的所有工作详细信息。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS95MVdFYy5qcGcifQ==” alt =“在此处输入图像描述”>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ZMzNEay5qcGcifQ==” alt =“在此处输入图像描述”>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9VRnhWZC5qcGcifQ==” alt =“在此处输入图像描述”>

基于上述方法,并且一旦填充了数据,当我们在Postgres DB中运行以下查询时。

SELECT * FROM VMRCTTA1.VMRRCUST_SUMM where cust_gssn_cd='XY03666699' ;
SELECT * FROM VMRCTTA1.VMRRCUST_SUMM where cust_cntry_cd='847' ;

但是,当我们使用下面的Trim运行相同的查询时,将不会返回任何记录。

SELECT * FROM VMRCTTA1.VMRRCUST_SUMM where trim(cust_gssn_cd)='XY03666699' ;
SELECT * FROM VMRCTTA1.VMRRCUST_SUMM where trim(cust_cntry_cd)='847' ;

以下是我们试图克服这一问题但没有运气的方法。

  1. 源和目标组件之间使用的tmap。
  2. [高级设置下的源组件中使用的修剪。
  3. 将cust_cntry_cd的Postgres DB中的数据类型从char(5)更改为Character varying,这将允许值而没有任何长度限制。

[请指出缺少的内容,因为在几乎所有具有character/varchar列的表中都有此问题。

我们正在使用TOS。

postgresql etl talend
2个回答
0
投票

数据类型在DB2中可能是character(5)

这意味着尾随空格是列的一部分,将被迁移。您必须与

进行比较
cust_cntry_cd = '847  '

或将正确的参数强制转换为character(5)

cust_cntry_cd = CAST ('847' AS character(5))

0
投票

也许您可以删除tDB2Input组件的高级设置中的所有空格。像屏幕上一样:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.