在 SSIS 中执行 Python 脚本,它使用 SSIS 生成的数据
Execute Python script inside SSIS, which using SSIS generated data
我有一个将导入 excel 文件的 SSIS 包。我想使用 python 脚本 运行 遍历所有列标题,并将所有空格替换为“_”。
以前对 pandas 数据框执行此操作时,我会使用:
df.columns = [w.replace(' ','_') for w in list(df.columns)]
但是我不知道如何从 python 引用列 headers。我了解我使用 'Execute Process Task' 以及如何将其实现到 SSIS 中,但是如何从 Python?
引用 SSIS 包中包含的数据集
您的数据集不会在 SSIS 中。 “在”SSIS 中的唯一数据是数据流任务中的行缓冲区。您可以在其中定义源、目标以及每行发生的任何转换。
如果您要执行 python 脚本,最终结果是您以其他格式表达了原始 Excel 文件。也许您将其重写为 CSV,也许您将其写入 table,也许它只是作为新的 Excel 文件写回但列名中没有空格。
没有允许您直接使用 python 的本机数据流源。有一个脚本组件允许您 运行 任何东西,还有一个 IronPython 允许您 run IronPython in SSIS 但这不适用于数据流任务。数据流任务在 运行 时间依赖于元数据。也就是说,在包运行s之前,引擎将询问源和目标元素以确保它们存在,列的数据类型相同或大于在设计时构建的合同中描述的数据类型。
简单来说,您不能动态更改数据流任务中数据的形状。如果您需要一个通用的动态数据导入器,那么您就是在自己编写所有逻辑。您仍然可以使用 SSIS 作为执行框架,因为它具有良好的日志记录、管理等功能,但您的 SSIS 包将主要是 .NET 项目。
综上所述,如果您尝试将 IronPython 与 Pandas 结合使用,我认为您将 运行 面临的下一个挑战是 they don't work together。至少,所表达的“重命名列”的愿望值得您付出努力和维护头痛。
有一个选项可以在数据流中使用 python 脚本执行 sp_execute_external_script 并将其用作源。您也可以将其保存为 CSV 或 excel 文件并在 SSIS 中读取。
我有一个将导入 excel 文件的 SSIS 包。我想使用 python 脚本 运行 遍历所有列标题,并将所有空格替换为“_”。
以前对 pandas 数据框执行此操作时,我会使用:
df.columns = [w.replace(' ','_') for w in list(df.columns)]
但是我不知道如何从 python 引用列 headers。我了解我使用 'Execute Process Task' 以及如何将其实现到 SSIS 中,但是如何从 Python?
引用 SSIS 包中包含的数据集您的数据集不会在 SSIS 中。 “在”SSIS 中的唯一数据是数据流任务中的行缓冲区。您可以在其中定义源、目标以及每行发生的任何转换。
如果您要执行 python 脚本,最终结果是您以其他格式表达了原始 Excel 文件。也许您将其重写为 CSV,也许您将其写入 table,也许它只是作为新的 Excel 文件写回但列名中没有空格。
没有允许您直接使用 python 的本机数据流源。有一个脚本组件允许您 运行 任何东西,还有一个 IronPython 允许您 run IronPython in SSIS 但这不适用于数据流任务。数据流任务在 运行 时间依赖于元数据。也就是说,在包运行s之前,引擎将询问源和目标元素以确保它们存在,列的数据类型相同或大于在设计时构建的合同中描述的数据类型。
简单来说,您不能动态更改数据流任务中数据的形状。如果您需要一个通用的动态数据导入器,那么您就是在自己编写所有逻辑。您仍然可以使用 SSIS 作为执行框架,因为它具有良好的日志记录、管理等功能,但您的 SSIS 包将主要是 .NET 项目。
综上所述,如果您尝试将 IronPython 与 Pandas 结合使用,我认为您将 运行 面临的下一个挑战是 they don't work together。至少,所表达的“重命名列”的愿望值得您付出努力和维护头痛。
有一个选项可以在数据流中使用 python 脚本执行 sp_execute_external_script 并将其用作源。您也可以将其保存为 CSV 或 excel 文件并在 SSIS 中读取。