如何使用Python执行SSIS ETL软件包

时间:2018-06-28 07:26:51

标签: python ssis etl

我有一个SSIS软件包,当前正在使用Visual Studio运行。我想知道python中有什么机制可以执行那些SSIS包。

3 个答案:

答案 0 :(得分:1)

您可以使用DTExec运行SSIS程序包。您基本上是启动一个外部进程来运行该程序包。您可以执行存储在SQL Server上的包以及文件系统上的包。这是一个非常灵活的工具,带有命令行参数,可以支持多种情况。

答案 1 :(得分:0)

您可以通过“执行流程任务”来执行此操作。使用以下条目

  • 可执行文件:pythonw.exe
  • 参数:这将是您的脚本文件

仍在努力清理错误处理,以便它可以更好地报告错误,但可以正确地处理脚本。

答案 2 :(得分:0)

您可以执行一个 Transact-SQL 脚本来调用 dtsx 包的执行。

这比其他答案有优势,因为您不需要访问 DTExec(需要访问运行 SSIS 服务的机器)并且适用于其他编程语言(如果不是全部的话,大多数都允许)执行TSQL)。

唯一的要求是:

  • 能够在 python(pyodbc 或类似的)中连接到 SQL Server 数据库服务
  • 在 SQL Server 数据库服务中配置 Integration Services 目录

Microsoft 快速入门:SSIS with TSQL

存储过程文档:catalog.create_execution

代码示例,摘自快速入门:

Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx',
    @execution_id=@execution_id OUTPUT,
    @folder_name=N'Deployed Projects',
      @project_name=N'Integration Services Project1',
    @use32bitruntime=False,
      @reference_id=Null
Select @execution_id
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,
    @object_type=50,
      @parameter_name=N'LOGGING_LEVEL',
      @parameter_value=@var0
EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO