我设计了一个Talend作业来将数据从excel文件复制到SQL Server表。 在复制数据之前,我使用数据库中定义的一个存储过程来清除数据库中已有的条目,这样就不会重复。
但是,由于我将数据转换到可能没有此存储过程的数据库,我的数据转换将无法正常工作。
所以我想在我的Talend作业中定义存储过程。
我应该使用哪个组件以及如何操作?
答案 0 :(得分:1)
使用tSQLRow组件执行SQL语句,可以在tSQLRow组件中执行PLSQL语句。
答案 1 :(得分:0)
Talend txxxSqlOutput组件为您提供了更改默认“表上操作”的选项,其中一个选项是清除表或截断它(有关差异,请参阅here)。或者,如果您希望每次都为数据加载数据启动而且不需要预先准备好的表和自定义索引,那么您可以使用drop table if exists and create
选项每次重新启动。该选项的唯一问题是它不会创建一个PK索引,数据类型,设置长度和设置字段上的可空/不可空。因此,如果您需要添加大量索引,那么您将丢失这些索引,但随后您可以随后添加索引,这样可以加快初始插入速度。
与往常一样,您可以使用数据库行组件对数据库执行自定义SQL,这包括DELETE
s,TRUNCATE
和ALTER
但我倾向于尽可能使用Talend提供的图形组件,因为它可以防止逻辑过滤到单独的级别。在初始DB输出组件中使用ALTER
语句后,您可以使用CREATE
语句来设置索引/复杂键。
作为旁注,除非您要求没有应用程序在数据库上执行临时SQL语句,并且必须通过调用sproc来完成所有操作,否则我不会将这种SQL语句放入存储过程中。这通常只是面向公众的应用程序中的情况,出于安全原因这样做,并且允许外部触发DELETE
语句听起来像个坏主意。