2011-09-27 67 views
0

幾種方法:將csv文件上傳到MS SQL表格的最佳方法是什麼?

  1. 使用SQL批量導入存儲過程並調用存儲過程與
  2. 使用SqlBulkCopy的在System.Data.SqlClient的DLL
  3. 文件路徑逐行讀取文件中的行,然後插入按行排成一排
  4. 還有其他的方法嗎?

哪一個最好?我只想讓用戶從asp.net網頁選擇一個文件。然後點擊上傳按鈕將文件存儲在數據庫中。

其次,在將文件複製到數據庫表之前,是否需要將文件移動到服務器內存中?

+1

我會爲#2投票。這很簡單,並且處理潛在的SQL注入(逐行讀取可能會或可能不會,取決於它如何編碼)並且效率很高。 – David

回答

0
  1. 數據庫不會知道文件,因爲所有的東西都應該分離和分層。將文件保存到某個共享位置增加了開銷,整潔UPS等

  2. 當然,你希望這是一個原子操作。 10k行將是10次往返,客戶端事務正在運行。如果不是原子的,那麼你需要登臺表和整理ups

  3. 解析在c#中,發送到數據庫與table valued parameter。否則,可能沒有什麼相同和/或現實...

+0

謝謝。在將文件複製到數據庫表之前,是否需要將文件移動到服務器的內存中? – InfoLearner

+0

如果您需要複雜的數據轉換(而且我確實意味着複雜),那麼調用SSIS包來完成這項工作是另一種可能性。 – HLGEM

+0

@KnowledgeSeeker:呃..不是真的。例如,您可以在CSV上使用數據讀取器,並且這將形成SQLBulkCopy的輸入。我自己並沒有完成.net部分:只是SQL方面。如果你的意思是「我在網絡服務器上處理」,然後發送到SQL Server「那麼是的,你也有。 – gbn

相關問題