批量插入控制流任务(SSIS)完成而不加载源文件,但也没有错误

时间:2017-05-19 05:37:09

标签: ssis ssis-2012 msbi

我尝试使用"批量插入任务"将内容如下的csv文件加载到SQL Server 2012数据库表NYC_Business_Establishment_DataSet中。在SSIS 2012控制流程中。控制流任务完成没有任何错误,但我无法在目标表中看到此记录。请指教。

CSV文件内容

DBA,Establishment Street,Establishment Zip,Establishment Borough,Business Sector,Establishment Category,Type of Cuisine,Number Of Employees,Actual Opening Date
Palermo Salumeria,33-35 Francis Lewis Blvd,11358,Queens,,,,,
Foragers City Grocers,300 West 22nd Street,10011,Manhattan,,,,,
Cultural Xchange,35 Lafayette Ave,11217,Brooklyn,,,,3,

目标表     使用[DB]     GO

/****** Object:  Table [dbo].[NYC_Business_Establishment_DataSet]    Script Date: 5/19/2017 3:31:55 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[NYC_Business_Establishment_DataSet](
    [DBA] [varchar](1000) NULL,
    [Establishment Street] [varchar](1000) NULL,
    [Establishment Zip] [int] NULL,
    [Establishment Borough] [varchar](100) NULL,
    [Business Sector] [varchar](1000) NULL,
    [Establishment Category] [varchar](1000) NULL,
    [Type of Cuisine] [varchar](100) NULL,
    [Number Of Employees] [int] NULL,
    [Actual Opening Date] [date] NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

由于

2 个答案:

答案 0 :(得分:0)

输入数据文件存在问题。 对于最后两列[员工人数],[实际开业日期],文件中的数据为空字符串而非空。所以它失败了。

我可以使用数据流任务加载文件。添加了派生列转换以将字符串转换为NULL。

TRIM([Number Of Employees]) == "" ? NULL(DT_I4)  : (DT_I4)[Number Of Employees]
TRIM([Actual Opening Date]) == "" ? NULL(DT_DBDATE) : (DT_DBDATE)[Actual Opening Date]

答案 1 :(得分:0)

选择&#34的复选框;将来自源的空值保留为数据流中的空值"在数据流中解决了这个问题。

数据文件中的字段是一致的,只有当目标字段为整数和日期时才会出现问题。

我认为csv文件有空值时,应该插入为NULL。

如果有任何其他事情,请告诉我。