2011-11-24 74 views
1

我想在C#中創建一個將兩種類型的文件導入SQL Server的程序:製表符分隔列和固定列。實際上,我需要每天下載一個文件並將該文件導入到我的數據庫中。我可以使用批處理腳本創建控制檯應用程序。我看到一些例子,如this,但我不知道它是否是最好的面向對象的方式來做到這一點。使用C#將平面文件導入到SQL服務器

我可以使用StreamReader,Regex等,但我不想重新發明輪子。

PS: 在VBA中我使用了「QueryTables.Add」。

+0

你能顯示哪些文件應該看起來像相關的SQL服務器的格式? – msarchet

+0

請注意,批處理標籤「用於Windows批處理文件問題」。不要僅僅因爲你的問題以任何方式與「批」字有關... – Aacini

回答

1

如果您不想重新發明輪子,那麼您應該查看SQL Server爲此提供的本機工具,即bcpHere是關於bcp的常見問題列表。

0

聽起來像是SQL Server Integration Services(SSIS)的完美工作。您可以輕鬆地在SSIS中定義數據導入任務,然後通過使用SQL作業安排它運行。

+0

我正在使用SQL Server 2008 express – Makah

2

您可以通過SqlBulkCopy以完全託管代碼導入;所有你需要做的就是通過SqlBulkCopy處理TSV的IDataReader。幸運的是codeproject上的FastCsvReader可以做到這一點。

+0

我在我的文件中有一些垃圾行。我需要像行模式(正則表達式)。我可以創建一些文件轉換器,然後使用SQLBulk – Makah

0
bulk insert [dbo].[CoursesTemp] 

從「C:\用戶\公用\下載\ Courses.csv」

with (fieldterminator = ',', rowterminator = '\n') 
go 
insert [dbo].[Courses] 
    (code, description, instructor, date, venue, duration) 
select 
    code, description, instructor, cast(date as date), venue, 
    duration 
from [dbo].[CoursesTemp]