SSIS - 为每个循环更新错误

时间:2016-11-17 14:06:24

标签: sql-server ssis

enter image description here我有一些.txt文件,我试图导入我的oledb目的地。 我想在以.csv格式提取数据之前对数据应用一些更新。我正试图通过SSIS实现这一目标。

我有以下流程:

  

1>执行sql任务以截断我现有的表
  2>将我的平面文件导入oledb dest的数据流任务   3>执行sql任务以根据我的需要更新我的数据   4>数据流任务,用于导出csv文件中的数据。

这里的担忧是: 我有很多这样的文本文件,我想在我的包中使用用于每个循环容器, 我的文本文件包含供应商明智的数据,例如:tibco.txt,我想从一个位置导入此文件并将其解压缩到具有相同名称但扩展名为 .csv 的目标文件夹。 我每次使用for循环时都使用了一个存储文件名的变量,并在表达式中设置了它:连接上面步骤2中使用的输入平面文件的字符串。

我的包运行正常,直到第二步,但无法在步骤3更新数据。

错误:     [执行SQL任务]错误:执行查询“update tablename set vendor_inventory = r ...”失败,并显示以下错误:“无效的列名'HOSTNAME'。”。可能的失败原因:查询问题,“ResultSet”属性设置不正确,参数设置不正确或连接未正确建立。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用一个变量,您正在控制流中的某个位置进行更改,而该变量无法正确反映到表达式中。

对于每个带文件系统的循环

,我总是使用Config表

表格定义

CREATE TABLE [dbo].[tbl_SSIS_InputMapping](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Conn_Mgr] [varchar](50) NULL,
    [MD_File] [varchar](500) NULL,
    [Input_Path] [varchar](500) NULL,
    [Output_Path] [varchar](500) NULL,
    [Archieve_Path] [varchar](500) NULL,
    [File_Format] [varchar](100) NULL,
    [File_Type] [varchar](50) NULL,
    [Package_Name] [varchar](100) NULL,
    [Active] [char](1) NULL,
    [AttachOutput] [char](1) NULL)

我的文件夹结构如下所示

MainFolder\MetaData
MainFolder\Input
MainFolder\Output

我的配置表看起来像 this

MetaDataFile是验证包所必需的。因为您可以在处理后移动输入文件。但是下次启动软件包时,它会查找该文件(被移动/删除)并且它将失败。

这是一种非常通用的方法,可根据您的需要进行定制