首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Talend加载增量

使用Talend加载增量
EN

Stack Overflow用户
提问于 2015-11-26 21:35:09
回答 4查看 2.5K关注 0票数 0

我是使用Talend的新手。我想在我的ETL中使用增量加载。我从Mysql数据源中提取并加载到Postgresql数据库中。Mysql数据源有created_at和updated_at时间戳,我想用它们来提取新数据或更新数据。我以前已经在使用SSIS的Sql Server中实现了这一点。我不确定如何使用Talend来实现。有人使用Talend实现过带时间戳的增量加载吗?提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2017-11-01 19:34:14

因为你有日期文件来识别三角洲,所以这将很容易。有两个文件,一个是当前日期(作业流开始时)。另一个文件上次运行日期的低位日期为19000101。在第一次加载运行作业并从上次运行日期文件中读取日期时,将此作为where子句,以检查源数据时间戳col>run日期并运行作业。接下来,将当前日期文件值移动到下一次运行日期文件。在增量运行中,再次执行相同的过程。因此,您将获得增量记录。

票数 2
EN

Stack Overflow用户

发布于 2015-12-01 15:02:45

首先,我们将创建一个日志表,列有Job_id、Job_name、start_time、end_time、status。每当作业运行一次时,都需要在作业结束时更新此表。

在下面给出表输入条件,如下所示

请参见下图或

check below image for job flow

票数 1
EN

Stack Overflow用户

发布于 2018-11-02 23:15:15

有几个选择--这个答案不是特定于时间戳的,但仍然是有帮助的。

  1. 您可以将内置的CDC直接用于某些数据库(Talend之外),如SQL Server和Oracle。可能与你的情况无关。
  2. 你可以对某些数据库使用内置的CDC (在Talend内部)。需要订阅版本。包括MySQL、Oracle、DB2、PostgreSQL、Sybase、MS SQL Server、Informix、Ingres和Teradata。https://help.talend.com/reader/4UeRbZs9GU5n8b9nm3hUrQ/8yztvpROOkQauOWwo_0twA
  3. You可以通过SQL和Java (创建自定义例程)或所包含的组件tAddCDCRow来执行手动方法。这将涉及对键和/或非键值使用MD5散列值。*对于非关键字段,请始终使用哈希。A.用于键组合的哈希,并包含剩余字段以进行比较。

B.比较中包含所有关键字段,其余字段使用散列。

C.对键组合使用一个哈希,对其余字段使用另一个哈希。

如果使用tAddCDCRow,则对组合键使用一个组件,对其余字段使用另一个组件。当然,如果只对密钥进行散列,则只需要一个组件。如果使用自定义Java函数,请根据需要调用一次或两次。

散列Java函数:

代码语言:javascript
复制
// data = Text for which to generate hash value.  Will be a combination of one or 
more fields.  Recommend padding strings with spaces to accurately combine.  Can use |
or similar dividers.  Convert integers and other non-text to strings, as necessary.
public static String getMD5(String data)
{
java.security.MessageDigest digest; // Message digest of type, MD5.
byte[] hash; // Byte array containing passed text converted to hash value.

// Create a message digest with the specified algorithm name -- MD5.
digest = java.security.MessageDigest.getInstance("MD5"); 

// Convert passed text to hash value -- as a byte array.
hash = digest.digest(data.getBytes("UTF-8"));

// Return the hash value converted to a string.
return javax.xml.bind.DatatypeConverter.printHexBinary(hash);
}

下面是另一个代码示例的链接:https://community.talend.com/t5/Design-and-Development/sha1-hash-key/td-p/109750

散列比较:使用散列(可能还有其他)字段比较新旧信息。对关键字段(或相关散列)和非关键字段的散列使用完全的外部联接。当在新端而不是旧端发现null时,就需要插入。当在旧的一端发现空值,但在新端没有发现空值时,需要删除(或者根据您的需要直接忽略)。当没有出现null时,执行更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33940075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档