在SSIS内执行Python脚本,该脚本使用SSIS生成的数据

2024-10-01 15:31:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个SSIS包,可以导入excel文件。我想使用一个python脚本来运行所有列标题,并将所有空格替换为“\”

以前,在对熊猫数据帧执行此操作时,我会使用:

df.columns = [w.replace(' ','_') for w in list(df.columns)]

但是,我不知道如何引用python中的列标题。我知道我使用“执行流程任务”以及如何将其实现到SSIS中,但是如何从Python引用SSIS包中包含的数据集


Tags: columns文件数据in脚本标题dffor
2条回答

有一个选项可以在数据流中使用python脚本执行sp_execute_external_脚本,并将其用作源。您还可以将其保存到CSV或excel文件,并在SSIS中读取

您的数据集将不在SSIS中。SSI中唯一的数据是数据流任务中的行缓冲区。在这里,您可以定义源、目标和每行发生的任何转换

如果要执行python脚本,最终的结果是您已经用其他格式表达了原始Excel文件。可能您将其重写为CSV,可能您将其写入表中,可能它只是作为新的Excel文件写回,但列名中没有空格

没有允许您直接使用python的本机数据流源。有一个脚本组件可以让你运行任何东西,还有一个IronPython可以让你运行run IronPython in SSIS,但是对于数据流任务来说这是行不通的。数据流任务在运行时依赖于元数据。也就是说,在运行包之前,引擎将查询源元素和目标元素,以确保它们存在,列的数据类型与设计时生成的合同中描述的数据类型相同或更大

简单地说,您不能在数据流任务中动态更改数据的形状。如果您需要一个通用的动态数据导入器,那么您需要自己编写所有逻辑。您仍然可以使用SSIS作为执行框架,因为它具有良好的日志记录、管理等功能,但您的SSIS包将主要是一个.NET项目

因此,尽管如此,我认为如果你尝试将IronPython用于熊猫,你将遇到的下一个挑战是they don't work together。至少,这还不足以说明“列重命名”这一表达的愿望值得你付出努力和维护

相关问题 更多 >

    热门问题