我尝试使用"批量插入任务"将内容如下的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
由于
答案 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。
如果有任何其他事情,请告诉我。