我在文本文件中存储了一些SQL语句。如何将这些文件提取到SSIS中的字符串变量中,以便我可以在多个位置使用相同的查询?
回答问题:
查询冗长而复杂,我更喜欢在真实的文本编辑器中编辑,而不是在SSIS文本框中编辑。我还希望那些无法访问SSIS或不知道如何使用SSIS的人可以编辑查询。最后,每个查询用于许多不同的数据流。如果我错了,请纠正我,但如果我在多个位置使用相同的查询,我相信我必须使用变量或重写每个数据流的代码。
答案 0 :(得分:7)
以下是我做这件事的方法(在搜索到答案后找不到答案。)
我开始使用导出数据向导创建的包,因此我的说明与此相关。这样做可以设置列映射。如果您没有使用“导出向导”来创建包,则可能需要手动添加列。
就是这样。我希望我记得所有的一切。该脚本是关键部分,因此您可以将SQL转换为变量,然后在数据流中使用该变量。
Imports System
Imports System.IO
Imports Microsoft.SqlServer.Dts.Runtime
Public Class ScriptMain
Public Sub Main()
Try
Dts.Variables("SQLCommand").Value = System.IO.File.ReadAllText(Dts.Variables("SQLFileName").Value.ToString)
Dts.TaskResult = Dts.Results.Success
Catch oException As System.Exception
Dts.TaskResult = Dts.Results.Failure
End Try
End Sub
End Class
答案 1 :(得分:4)
我不建议这样做。我的建议是存储过程。
这是怎么回事,
在连接管理器下创建文件连接。
打开文件连接的属性,然后编辑表达式。
为包含SQL文件路径的连接字符串属性创建表达式(类似于@[User::SQLFileName]
,其中SQLFileName是您的变量)。
设置执行SQL任务并将其指向包含刚刚创建的表达式的文件连接。 如果更改变量中的路径,它将更改SQL执行的内容(因为表达式是在运行时计算的)。您甚至可以从db加载这些路径,并为每个包含执行SQL任务的路径执行操作。 如果您使用这些文件而不仅仅是SQL任务来加载/输出数据,则需要观察列和元数据。
克里斯
答案 2 :(得分:0)
或者,(并且这可能不适用于您自己),您可以在实际数据库上创建一个视图,该视图可以在不访问SSIS包的情况下进行更改。其他用户可以像你提到的那样编辑SQL,你甚至可以在讨价还价中得到一些智能支持。
我不喜欢在SSIS文本框中编写SQL。