2014-01-15 33 views
0

背景:導入CSV與Access前端文件到SQL Server

在我的公司,我們有哪些必須導入到SQL Server的很多的CSV文件。 CSV文件包含多維市場模擬,這些模擬以EAV形式存儲(2列和10^6到10^10行)。它們的大小是可變的,但超過500Mb並不罕見。

到目前爲止,這些文件是由數據庫管理員通過SSMS導入到SQL Server中的。

每個輸入都應該得到一個ImportationID和一個時間戳。這對於手動執行此操作的數據庫管理員來說非常耗時且容易出錯。

因此,創建Access前端以允許每個用戶在使用列表框進行選擇後,輕鬆地將CSV文件導入服務器。 現在,我遇到了通過Access界面導入CSV文件的問題。

問題:

這裏是我所考慮,但其可能的選項是不可能的:

  • 通過一些T-SQL命令到SQL Server,這裏列出的(不允許由Access訪問)
  • 用VBA循環逐行導入CSV(10^6到10^10行需要太長時間)
  • 導入CSV文件到Access數據庫中,然後將表導出到SQL SERV呃(訪問的2Gb大小限制使它不可能)

是否有任何其他選項來執行此任務,使用Access?

+1

您鏈接的頁面包含的代碼應該作爲針對SQL Server數據庫的TSQL執行。我不認爲你可以使用Access和ADODB的代碼。我會想象正確的方法是將CSV導入到Access;在Access中操作/轉換數據;將數據填充到臨時表中的SQL Server;消除SQL Server中的sproc來攝取數據。需要更多的細節來幫助你解決你的問題。 –

+0

謝謝,我添加了一些更多的細節。主要問題是這些文件太大而無法導入到Access中,有些文件大於Access的2Gb限制。 – motsdujour

回答

2

一種可能的解決方案如下。你的訪問前端有一個表單,它接受三個值:文件名/位置; ImportationID;時間戳。用戶輸入這些數據後,'Go'或'Submit'按鈕在接受這3個變量的SQL Server數據庫上觸發一個存儲過程。

存儲過程將發出BulkInsert(或其他鏈接的命令)以將CSV獲取到數據庫中,然後根據業務規則操作數據並進行轉換(正確設置ImportationID和Timestamp,例)。

這是數據庫開發者(或者數據庫管理員)應該能夠設置的東西,並且可以在數據庫上執行任何驗證或安全約束。

+0

這是一個好主意!我將用db管理員設置它。 – motsdujour