2012-02-22 47 views
1

我正在使用每個350 mb +和1,100,000行以上的CSV交易數據文件。如何使用Windows 7 API通過Excel VBA對CSV文件執行簡單的數據庫查詢?

我想知道如何通過VBA IDE對這些文件執行一些簡單的快速查詢,保存CSV,然後在Excel中打開結果作爲工作簿。

例如,我想這樣做:

  1. 裝入CSV到RAM中的表
  2. 刪除其中的「失敗」
  3. 保存結果的領域被稱爲TRANSACTION_TYPE記錄的所有行作爲一個新的CSV
  4. 打開的結果在Excel工作簿

我的目標是做這個操作具有最高PERF可能性。我認爲這個功能是由Extensible Storage Engine (ESE)提供的,但我不確定如何通過Excel VBA IDE使用它。

謝謝!

+0

如果你需要它快,你或許應該考慮做轉型的另一種語言(C Java的....),只有在VBA第4步。 – assylias 2012-02-22 08:43:20

回答

1

你可以使用一個 '文本數據庫',並使用ADO(或DAO)查詢文件。有關更多信息,請參閱此文章:http://msdn.microsoft.com/en-us/library/ms974559.aspx

這樣,您可以爲要查詢和使用標準SQL查詢文件的文件創建schema.ini文件。然後,您只需將結果記錄集寫入文件。

+0

這看起來很有希望,我會試試看,謝謝!但是,這是JET紅色。我仍然會嘗試使用JET Blue解決方案,我認爲它應該快很多。 – fomoz 2012-02-22 15:16:03

+0

JET 4.0不與64位Excel工作:(任何其他的想法? – fomoz 2012-02-22 20:34:24

+0

我把它用[此頁](http://msdn.microsoft.com/en-us/library/ms974559信息工作的.aspx)並改變Microsoft.ACE.OLEDB.12.0。現在,什麼是最好的(安裝[這](http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255後)該記錄方式寫入到CSV? – fomoz 2012-02-22 21:16:00

1

我不知道如何通過Excel VBA IDE使用它。

即使我:)

  • 裝入CSV到RAM中的表
  • 刪除其中場稱爲TRANSACTION_TYPE被記錄爲所有的行「失敗」
  • 結果保存爲一個新的CSV
  • 打開,結果在Excel
  • 工作簿

這裏是一個另類。

  • 裝入CSV到從Excel Access數據庫使用 「.TransferText

示例代碼

Option Explicit 

'~~> Set reference to Microsoft Access Object Library 
Sub Sample() 
    Dim oacApp As Access.Application 

    Set oacApp = New Access.Application 

    oacApp.OpenCurrentDatabase "C:\MyDatabase.mdb" 

    oacApp.DoCmd.TransferText acImportDelim, "", _ 
    "Table1", "C:\Mycsv.csv", True 

    oacApp.CloseCurrentDatabase 
    oacApp.Quit acQuitSaveNone 

    Set oacApp = Nothing 
End Sub 
  • 刪除其中場稱爲TRANSACTION_TYPE記錄的所有行作爲「失敗」

您可以通過從excel運行查詢來完成此操作。

  • 結果保存爲一個新的CSV

再次使用 「.TransferText」 將其導出爲CSV

示例代碼

oacApp.DoCmd.TransferText acExportDelim, "Standard Output", _ 
    "Table1", "C:\MyNewcsv.csv" 
  • 開放作爲工作手冊的結果在Excel中

HTH

+0

我知道這個選項,但我不滿意我的訪問(JET紅)得到了表現。我真的想嘗試使用ESE(JET Blue)。我會在更高的性能上減少功能。 – fomoz 2012-02-22 14:47:23

相關問題