如何使用 Python 执行 SSIS ETL 包

How to execute SSIS ETL package using Python

我有一个 SSIS 包,我目前 运行 使用 Visual Studio。我想知道 python 中是否有任何机制可以让我执行那些 SSIS 包。

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

您可以使用 'Execute Process Task' 来做到这一点。使用以下条目

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

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

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

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

唯一的要求是:

  • 能够连接到 python 内的 SQL 服务器数据库服务(pyodbc 或类似的)
  • 在 SQL 服务器数据库服务中配置集成服务目录

微软快速入门: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

您可以使用批处理文件作为执行 SSIS 包的工具。首先,您需要设置批处理文件,然后在 python:

中使用以下代码
 import subprocess
 subprocess.call([r'full_path_to_batch_file_directory/batch_file.bat'])