我們正試圖通過Powershell將CSV檔案匯入Access資料庫。我的輸入檔案大小為1GB,而且在迭代每一行并使用插入命令時越來越困難。如果有任何快速的建議,我們將非常感激
。謝謝!!
uj5u.com熱心網友回復:
正如@AlbertD.Kallal所表達的那樣--使用Powershell的理由是什么?... 我只是做了一個假設,即你尋求的是自動、每天、無人看管地運行的東西 - - - 因為這是一個典型的原因。
如果是這樣的話,那么它實際上可以分解為兩個部分:
- 在 Access 中手動匯入 - 然后設定該匯入,以便在啟動/打開 Access 檔案時自動啟動(自動執行)。
- 只需使用 powershell 每天啟動/打開 Access 檔案(或任何時候...)。
Access并不是被設計成全時開放和無人值守的運行。 因此,這是在該模式下使用它的典型方法。
uj5u.com熱心網友回復:
好吧,現在已經說明不需要power-shell了,在有些情況下,IT人員和人們正在使用power-shell來實作流程的自動化。因此,考慮使用power-shell并不是 "壞事"--尤其是當它被使用時。 我只想指出,PowerShell在性能方面沒有幫助--而且可能會更慢。
如果你不得不(不得不)安排每 15 分鐘或其他時間進行一次匯入,
?那么我建議在 Access 的標準代碼模塊中設定一個 VBA 例程來進行匯入。然后你在 power shell 或 windows 腳本中啟動 Access,然后呼叫該匯入程式。因此,第一步是在 Access 中設定該例程--即使使用某種批處理系統來安排該匯入例程的運行。
因此,你使用 Windows 的調度程式。
它將:啟動 Access,運行 VBA 子程式,關閉 Access。
而且使用windows調度程式是相當強大的。因此,我們不需要(或想要)保持 Access 的運行,而只是啟動它,運行匯入,然后關閉 Access。
接下來,如果匯入程序是 "巨大的 "或相當大的,那么在啟動時,可以創建一個臨時的 accDB 檔案,然后我們匯入到其中。然后,我們可以把匯入的表送入生產資料表。(通常列名是不同的等等。當然,匯入該臨時表也更加安全,而且更好的是,我們可以在匯入后洗掉該臨時檔案--這樣我們就不會出現膨脹或檔案大小的問題(不需要壓縮 修復)。
因此,首先要做的是使用 Access UI 手動匯入 csv 檔案。這也允許您創建和設定一個匯入規格。因此,該匯入規格可以記住資料型別(貨幣,或者通常是日期時間列)。
一旦我們完成了匯入作業并創建了匯入規范?
那么我們現在就可以撰寫代碼來完成上述相同的步驟,然后將匯入的表并將該資料放入生產資料表中。
這并不清楚你是否將匯入的 csv "分階段 "放入臨時表,然后將該表處理為真正的生產資料表,但我確實建議這樣做。
(嘗試直接匯入生產資料太危險)。
你現在也沒有分享什么樣的預處理,或者在你匯入該 csv 之后需要什么額外的代碼(但是,我們現在仍然假設這種匯入將進入一個新的臨時表)。
因此,我認為步驟是:
我們使用 Acces 的內置匯入功能匯入 csv 檔案
。然后我們將這個資料表發送到生產表,也許在我們將這個臨時表發送到生產表之前,我們會對每一行進行一些代碼處理。
一旦我們完成了匯入,那么我們就會轉儲并洗掉我們用于匯入的臨時 accDB 檔案,從而消除巨大的資料膨脹問題。
因此,對于下一次,我們將為新的匯入創建該臨時檔案,因此每次我們都以一個漂亮的空資料庫檔案開始。
所以第一個問題,你可以為這個測驗創建一個空白的新資料庫。你是否或能否使用 Access 匯入 csv 檔案。你想這樣做,因為這樣的匯入非常快,而且速度非常高。即使匯入的格式不是100%符合你的要求,你也需要確認并嘗試使用Access用戶界面是否可以匯入csv檔案。如果你可以,那么我們可以采用VBA命令來做同樣的事情,但是如果不能通過Access用戶界面進行簡單的csv匯入,那么撰寫代碼就沒有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329407.html
標籤:
