2017-05-19 34 views
1

我嘗試使用「批量插入任務」將內容低於的csv文件加載到SQL Server 2012數據庫表NYC_Business_Establishment_DataSet中SSIS 2012控制流程。控制流任務完成沒有任何錯誤,但我不能在目標表中看到此記錄。請指教。大容量插入控制流任務(SSIS)在不加載源文件的情況下完成,但沒有錯誤

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, 

目標表 USE [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

添加CSV的更多詳細信息。用你想要的最終輸出?給CSV文件的鏈接 –

回答

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] 
+0

嗨Srinivasa,謝謝你的回覆。你可以請教,你是如何發現最後2列有空字符串而不是null的?我不能從文件中刪除。 –

+0

當它與BCP失敗時,我試着用DataFlow加載它。在列中獲得無效的字符錯誤,所以猜測它應該是空洞刺痛的問題。一旦我添加派生列轉換,我能夠成功加載數據。 –

+0

哇,聰明,謝謝你的提示。將嘗試一次並關閉這個問題。 –

0

在數據流中選中「在源中保留空值作爲數據流中的空值」複選框可以解決此問題。

數據文件中的字段是一致的,僅當目標字段爲整數和日期時纔會出現問題。

我想csv文件當它有空值時,它應該被插入爲NULL。

如果有其他事情,請讓我知道。

相關問題