2010-12-02 73 views
0

我有一個FoxPro數據源,目標是SQL Server 2008的SSIS數據流溢出的日期

在FoxPro的一面,我與Date數據類型的列。寬度爲8,最小值爲0001-01-01,最大值爲9999-12-31。在SQL Server端,我有一個datetime。寬度爲8,最小值爲1753-01-01,最大值爲9999-12-31。

在我的SSIS數據流任務中,我有一個讀取FoxPro表的OLE DB源組件。這些列在外部列和輸出列中都映射爲DT_DBDate。到SQL Server表的OLE DB目標將採用該列並將其傳輸到DT_DBTIMESTAMP。我確信DT_DBTIMESTAMP可以充分處理這些日期範圍,併合理確定DT_DBDATE(但在MS文檔中無法找到它)。

的問題

當我執行任務,我一直在用它失敗與「無效的日期格式」抱怨,那就麻煩了「轉換失敗,因爲數據值溢出的具體類型」時,它會遇到20世紀初左右的價值觀,超過2050年的價值觀。我並不確定我錯在哪裏。

獎金問題

我如何處理溢出,在我的數據流任務?

回答

1

你可能想要做一個簡單的VFP查詢尋找那些超出範圍的記錄,例如在那些記錄問題的

select * from yourtable 
    where YourDate < date(1753, 1, 1) 
     or YourDate > date(9999, 12, 31) 

看一個VFP查詢... 另外,看看其他這可能導致你的邊界問題

+0

是的,我想我是看着這個錯誤的方式。根據業務需求,使用查詢處理比任何其他更合適。 – HackedByChinese 2010-12-22 00:21:56

1

列,我認爲你需要決定你想如果你想加載它,因爲它是你的數據

做什麼,你需要改變字段的數據類型,以便將能夠持有數據。

或者,如果您有任何希望糾正錯誤的數據,您需要驗證並轉換它。

如果您願意花一些錢,請考慮使用高級ETL處理器。它可以與文本,XML,Excel,Access,DBF,Foxpro,ODBC,OLE DB,MS SQL Server,Oracle,MySql,PostgreSQL,Firebird,Interbase,SQLite,POP3,SMTP,文件系統,FTP,SSL一起使用。和Unicode。