如何使用Windows 7 API通过Excel VBA对CSV文件执行简单的数据库查询?

时间:2012-02-22 05:17:18

标签: windows-7 excel-vba vba excel

我正在处理每个350 mb +和1,100,000+行的CSV交易数据文件。

我想知道如何通过VBA IDE对这些文件执行一些简单的快速查询,保存CSV,然后在Excel中将结果作为工作簿打开。

例如,我想这样做:

  1. 将CSV作为表格加载到RAM中
  2. 删除名为transaction_type的字段记录为“failed”的所有行
  3. 将结果另存为新CSV
  4. 在Excel中将结果作为工作簿打开
  5. 我的目标是以尽可能高的性能执行此操作。我认为此功能由Extensible Storage Engine (ESE)提供,但我不确定如何通过Excel VBA IDE使用它。

    谢谢!

2 个答案:

答案 0 :(得分:1)

  
    
      

我不确定如何通过Excel VBA IDE使用它。

    
  

甚至我:)

  
    
      
        
            
  • 将CSV作为表格加载到RAM中
  •         
  • 删除名为transaction_type的字段记录为“failed”的所有行
  •         
  • 将结果另存为新CSV
  •         
  • 在Excel中将结果作为工作簿打开
  •         
      
    
  

这是另一种选择。

  • 使用“ .TransferText ”从Excel将CSV加载到Access数据库中

示例代码

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的字段记录为“failed”的所有行

您可以通过从excel运行查询来实现。

  • 将结果另存为新CSV

再次使用“ .TransferText ”将其导出为CSV

示例代码

    oacApp.DoCmd.TransferText acExportDelim, "Standard Output", _
    "Table1", "C:\MyNewcsv.csv"
  • 在Excel中将结果作为工作簿打开

HTH

答案 1 :(得分:1)

您可以使用“文本数据库”并使用ADO(或DAO)来查询文件。有关详细信息,请参阅此文章:http://msdn.microsoft.com/en-us/library/ms974559.aspx

这样您就可以为要查询的文件创建一个schema.ini文件,并使用标准SQL查询该文件。然后,您只需将结果记录集写入文件。