Sql server Talend中的存储过程

Sql server Talend中的存储过程,sql-server,stored-procedures,talend,Sql Server,Stored Procedures,Talend,我设计了一个Talend作业,将数据从excel文件复制到SQL Server表。 在复制数据之前,我使用数据库中定义的一个存储过程来清除数据库中已有的条目,这样就不会重复 但是,由于我将对数据库进行数据转换,而数据库可能没有这个存储过程,因此我的数据转换将无法正常工作 所以我想在Talend作业本身中定义存储过程 我应该使用哪个组件以及如何执行此操作?使用tSQLRow组件执行SQL语句,您可以在tSQLRow组件中执行PLSQL语句。Talend TXSqlOutput组件为您提供了更改默认

我设计了一个Talend作业,将数据从excel文件复制到SQL Server表。 在复制数据之前,我使用数据库中定义的一个存储过程来清除数据库中已有的条目,这样就不会重复

但是,由于我将对数据库进行数据转换,而数据库可能没有这个存储过程,因此我的数据转换将无法正常工作

所以我想在Talend作业本身中定义存储过程


我应该使用哪个组件以及如何执行此操作?

使用tSQLRow组件执行SQL语句,您可以在tSQLRow组件中执行PLSQL语句。

Talend TXSqlOutput组件为您提供了更改默认“表上的操作”的选项,其中一个选项是清除表或截断表(有关差异,请参见)。或者,如果您希望每次初始化数据库以加载数据,并且不需要预先准备好的表和自定义索引,那么您可以使用
删除表(如果存在)并创建
选项每次重新开始。该选项唯一的问题是,它只会创建PK索引,而不会创建数据类型,设置长度并在字段上设置为nullable/not nullable。因此,如果您需要在中添加大量索引,那么您将丢失这些索引,但之后您可以始终将索引添加回,这也有利于加快初始插入

一如既往,您可以使用数据库行组件对数据库执行自定义SQL,这包括
DELETE
s、
TRUNCATE
s和
ALTER
s,但我倾向于尽可能使用Talend提供的图形组件,因为它可以防止逻辑向下过滤到单独的级别在初始DB输出组件中使用
CREATE
语句后,使用
ALTER
语句设置索引/复杂键


作为旁注,我不会将这种SQL语句放入存储过程中,除非您有一个要求,即没有应用程序在数据库上执行特殊SQL语句,并且所有操作都必须通过调用存储过程来完成。这通常仅在面向公共的应用程序中才是如此,在这些应用程序中,出于安全原因将执行这种SQL语句,并允许
DELETE
外部触发的语句听起来像是个坏主意。

我把tMSSqlSP和tMSSqlRow搞混了。正如名称所示,一个用于执行
tMSSqlSP
存储过程,另一个
tMSSqlRow
用于执行DELETE、update、select等SQL语句。我正在使用查询。。“从表1、表2、表3中删除”但不起作用。所有数据都会被复制,最后它会给出一个错误,上面写着“附近的语法不正确”,但是如果我使用查询“从表1中删除”,它会起作用。我是否必须对一个表使用多个tMSSQLRow?每个tMSSQLRow。我在这里找到了它。谢谢。