2012-05-16 23 views
0

我在加載到SQL之前使用schema.ini來驗證CSV文件中的數據類型/列。如果行中存在數據類型不匹配,它仍然會導入該行,但會將該特定不匹配單元格留空。如果有任何問題和/或提供錯誤報告(即哪一行有問題),我可以阻止用戶導入CSV文件。使用schema.ini作爲驗證器將CSV導入到SQL

回答

0

最好的方法是檢查文件是否有任何不匹配;但在大文件的情況下,這是不可行的。 您可能需要首先加載它,檢查表中的加載數據是否存在不匹配。這比檢查文件要快得多(您可以使用簡單的T-SQL腳本檢查表中的空值)。 如果發現不匹配,用戶可以通知,然後可以清除表格。

0

看看他FileHelpers庫:http://www.filehelpers.com/

這是一個非常強大的庫做各種進口,包括CSV和他們也有一個漂亮整潔的錯誤處理部分

使用不同錯誤模式對於3種錯誤處理,FileHelpers庫支持 。

在標準模式下,您可以在出現故障時捕獲異常。 這種方法並不壞,但是你失去了關於當前 記錄的一些信息,並且你不能使用記錄數組,因爲它不是被賦值的。

更智能的方式被usign的 ErrorManager中的ErrorMode.SaveAndContinue:

使用這樣的引擎,你有良好的記錄,在記錄 陣列和在ErrorManager中你有誤差TE記錄和能 做你想要的任何地方。

另一種選擇是忽略錯誤,並繼續在如何被 表明本實施例中

1 engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue; 2個 3記錄= engine.ReadFile(...複製到剪貼板|查看純| 打印| engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue;

記錄= engine.ReadFile(...在記錄陣列您只有 良好記錄。