Sql 如何避免插入重复记录

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

我正在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 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,以便我可以帮助您?嘿,谢谢!但实际上,当我在其中一列上添加主键时,它在没有查找的情况下工作得很好。那么您可能正在使用更新插入功能,对吗?但这不是一种正确的设计方式。我会导致很多性能问题。它将再次更新每个记录,这是不正确的方式,并为您提供了许多性能问题。您必须查找目标表并仅传递新记录或限制源中的现有记录