批量插入控制流任务(SSIS)在没有加载源文件的情况下完成,但也没有错误

Bulk Insert Control Flow Task(SSIS) complete without loading the source file, but no errors too

我尝试使用 SSIS 2012 控制流中的 "Bulk Insert Task" 将内容如下的 csv 文件加载到 SQL Server 2012 数据库 table NYC_Business_Establishment_DataSet 中。控制流任务完成且没有任何错误,但我在目标 table 中看不到这条记录。请指教

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,

目标Table 使用 [数据库] 去

/****** 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

谢谢

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

我可以使用数据流任务加载文件。添加了派生列转换以将字符串转换为 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]

在数据流中选中 "Retain null values from the source as null values in the data flow" 的复选框解决了这个问题。

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

我想当csv文件有空值时,它应该被插入为NULL。

如果有人有其他问题,请告诉我。