当前位置: 首页 > 面试题库 >

SSIS:如何将SQL语句从文件中提取到字符串变量中?

白宏大
2023-03-14
问题内容

我有一些存储在文本文件中的SQL语句。如何将这些文件提取到SSIS中的字符串变量中,以便可以在多个地方使用同一查询?

回答问题:

查询是漫长而复杂的,我希望在真实的文本编辑器中而不是在SSIS文本框中进行编辑。我还希望那些无法访问SSIS或不知道如何使用它的人可以编辑查询。最后,每个查询都在许多不同的数据流中使用。如果我错了,请纠正我,但是如果我在多个地方使用相同的查询,我相信我必须使用变量或为每个数据流重新编写代码。


问题答案:

这是我做这件事的方式(在到处搜索答案却一无所获之后)。

我从“导出数据向导”创建的程序包开始,因此我的说明与此相关。这样做可以建立列映射。如果您没有使用“导出向导”来创建程序包,则可能需要手动添加列。

  1. 将名为SQLFileName的字符串变量添加到包中。
  2. 将名为SQLCommand的字符串变量添加到包中。
  3. 在控制流的开头添加脚本任务。
  4. 编辑脚本任务,然后转到“脚本”部分。
  5. 将SQLFileName添加到ReadOnlyVariables部分。将其设置为您的.sql文件的路径。
  6. 将SQLCommand添加到ReadWriteVariables部分。
  7. 单击设计脚本。
  8. 粘贴在下面的脚本中。它只是将SqlFileName指定的文件内容读入SQLCommand。
  9. 确定您的出路,然后将脚本任务连接到其余的控制流。
  10. 转到您的数据流,然后选择“源查询”。您需要使用属性窗口来编辑属性。如果您使用精美的“编辑”窗口,则会收到有关未设置命令文本的错误。这是因为SQLCommand在设计时是空白的。
  11. 将AccessMode从变量更改为SQL Command。
  12. 在“ SQLVariableName”下,选择“ SQLCommand”。
  13. 您会看到一个红色的X被添加到了“源查询”中。那是因为SQLCommand是空白的。为防止红色X,请将ValidateExternalMetaData更改为False。

就是这样 我希望我记得所有的点点滴滴。脚本是关键部分,因此您可以将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


 类似资料:
  • 我有一个庞大的代码库,其中包含大量JAVA和。sql文件。我打算从所有这些文件中提取所有SQL语句。 这是我打算实现这一目标的方式- 构建一个正则表达式文件,其中包含我打算提取的选择、插入、删除、更新等模式。 在代码库中逐行解析文件并与Regex匹配。如果找到匹配,则注册代码行、文件名、模式等。 当SQL查询被分成多行时,就会出现问题。 我正在使用java。util。正则表达式。Matcher和j

  • 本文向大家介绍SQL Server 提取数字、提取英文、提取中文的sql语句,包括了SQL Server 提取数字、提取英文、提取中文的sql语句的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 有一个名为myDate的文本字段。该字段可以包含1)“结束 某日期 的会计年度”或2)“ dateA 到” dateB ”。 在情况1)中,我想将字段date1 =设置为 someDate 。 在情况2)中,我要设置字段date1 = dateA 和字段date2 = dateB 。 所有日期( someDate , dateA , dateB )都可以写为2000年1月1日,2000

  • 我有一个SSIS包,它有一个Execute SQL任务,其中有一个INSERT语句,它将日志数据插入到跟踪执行时间的smss中的SSIS跟踪表中。每次尝试执行任务时,都会出现以下错误:[execute SQL task]错误:执行查询“INSERT INTO DBO.ssis_logging_details(execution_in...”失败,错误为:“必须声明标量变量”@execguid“。”

  • 我有一个简单的平面文件,如下所示: 禁止使用的文字 文字1 字6 文字3 然后我将从像这样的表中的列值中删除这些单词(单词使用';'分隔): 原始列值 文字1;文字5;文字8;文字2;文字6 单词2;单词4;单词1;单词0;单词9 //等等 我使用OLE DB Source从SQL读取表并进行一些转换,并使用脚本组件删除这些单词。我可以使用平面文件源来读取禁止的单词,但如何在脚本组件中使用它们,因