Sql 如何避免插入重复记录
我正在Windows任务计划程序中以15分钟的间隔运行Talend作业。该过程类似于将数据从HBase导出到PostgreSQL。因此,当我运行任务时,第二个计划再次插入第一个计划的记录,依此类推Sql 如何避免插入重复记录,sql,postgresql,hbase,etl,talend,Sql,Postgresql,Hbase,Etl,Talend,我正在Windows任务计划程序中以15分钟的间隔运行Talend作业。该过程类似于将数据从HBase导出到PostgreSQL。因此,当我运行任务时,第二个计划再次插入第一个计划的记录,依此类推 HBase schema -> id int, name string PostgreSQL schema -> id int, name varchar(100),created index on (id) column. 例如: 附表插入 1st schedule 2nd
HBase schema -> id int, name string
PostgreSQL schema -> id int, name varchar(100),created index on (id) column.
例如:
附表插入
1st schedule 2nd schedule
`id``name` `id` `name`
1 abcd 4 bbbb
2 efgh 5 cccc
3 hjkl 6 eeee
my output in POSTGRES : EXPECTED output :
afer scheduling
id name id name
1 abcd 1 abcd
2 efgh 2 efgh
3 hjkl 3 hjkl
1 abcd 4 bbbb
2 efgh 5 cccc
3 hjkl 6 eeee
4 bbbb
5 cccc
6 eeee
提前谢谢 您必须使用postgresql目标表作为现有数据的查找和检查。 您的流程应该如下所示
source --> Expression --> Target
Lookup(to check existing data)
您的流程应该如下所示
source --> Expression --> Target
Lookup(to check existing data)
如果你需要更多的帮助,请告诉我。这是一项快速而简单的任务Postgres版本?请添加要导入的表的架构。导入数据后,为什么不从计划任务中清除?或者在从Hbase中提取时为什么不被忽略?@AdrianKlaver使用PostgreSQL 10.12版本。我尝试了好几次,但找不到任何解决方案。我不确定在数据库或TalendTested中的哪些地方必须进行更改?什么是表模式?您是否看过“optional ON CONFLICT子句指定了引发唯一冲突或排除约束冲突错误的替代操作”。Hbase表schema:id int,name string我尝试了此操作,但没有成功。我应该在tMap中更改任何内容吗?您是否有TeamWeaver,以便我可以帮助您?嘿,谢谢!但实际上,当我在其中一列上添加主键时,它在没有查找的情况下工作得很好。那么您可能正在使用更新插入功能,对吗?但这不是一种正确的设计方式。我会导致很多性能问题。它将再次更新每个记录,这是不正确的方式,并为您提供了许多性能问题。您必须查找目标表并仅传递新记录或限制源中的现有记录