我有一个SSIS
包,通过执行流程任务,我应该执行一个python
脚本文件,该文件下载一个由我的ssis
包传递的连接日期值的文件。 / p>
现在我的实际问题是当我从python
批处理文件执行windows
脚本时如何传递日期值,这样我应该在{{1}内部有一些代码用于获取该值并以更简单的方式执行操作的脚本,我的要求如下所示:
现有Windows批处理文件内容:
python
预期的Windows批处理文件内容:
python C:\MyPythonScript.py
python C:\MyPythonScript.py '@DateVariable'
值是动态的,运行时值从我的@DateVariable
包传递到批处理文件。
我的Python代码应该是这样的:
ssis
由于我来自datevalue=getDateValue from @DateVariable
#do some processing with the assigned datevalue
背景,我只是期待一个像存储过程这样的简单机制,其中提供的参数在存储过程中使用...
请帮助我使用SQL
中的确切代码,而不是建议我引用链接。
答案 0 :(得分:0)
我已将我的批处理文件定义为
echo As of %1 > C:\ssisdata\so_46734971.txt
需要注意的重要一点是,Windows批处理文件将使用基于1的位置序数系统作为参数。如果在批处理脚本中有python调用,则语法将相同。 python MyFile.py %1
然后我将我的执行流程任务配置为使用两个变量 - 第一个定义批处理文件的位置,因为我懒惰且已经写了。第二个变量是一个以yyyy-mm-dd方式计算日期的字符串。如果需要不同的值,请修改表达式,直到它与python脚本期望的格式匹配。
商业智能标记语言Biml是获得可重现的SSIS包的最简单方法。在这里,我定义了一个具有上述变量和执行过程任务的SSIS包。只需安装免费工具BimlExpress,然后将新的.biml文件添加到项目中。右键单击并选择生成SSIS包,然后输出完全正常的再现。
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_46734971">
<Variables>
<Variable Name="ExecutionDateString" DataType="String" EvaluateAsExpression="true">"\"" + (DT_WSTR, 4) YEAR(@[System::StartTime]) + "-" + RIGHT("0" + (DT_WSTR, 2) MONTH(@[System::StartTime]),2) + "-" + RIGHT("0" + (DT_WSTR, 2) DAY(@[System::StartTime]),2) + "\""</Variable>
<Variable Name="Command" DataType="String">C:\ssisdata\so_46734971.bat</Variable>
</Variables>
<Tasks>
<ExecuteProcess
Name="EP Run batch file"
Executable="C:\ssisdata\so_46734971.bat"
Arguments="Overridden">
<Expressions>
<Expression ExternalProperty="Executable">@[User::Command]</Expression>
<Expression ExternalProperty="Arguments">@[User::ExecutionDateString]</Expression>
</Expressions>
</ExecuteProcess>
</Tasks>
</Package>
</Packages>
</Biml>