Windows 7 如何使用Windows 7 API通过Excel VBA对CSV文件执行简单的数据库查询?
我正在处理的CSV事务数据文件分别是350MB+和1100000+行 我想知道如何通过VBA IDE对这些文件执行一些简单的快速查询,保存CSV,然后在Excel中将结果作为工作簿打开 例如,我想这样做:Windows 7 如何使用Windows 7 API通过Excel VBA对CSV文件执行简单的数据库查询?,windows-7,excel,vba,Windows 7,Excel,Vba,我正在处理的CSV事务数据文件分别是350MB+和1100000+行 我想知道如何通过VBA IDE对这些文件执行一些简单的快速查询,保存CSV,然后在Excel中将结果作为工作簿打开 例如,我想这样做: 将CSV作为表格加载到RAM中 删除名为transaction_type的字段记录为“failed”的所有行 将结果另存为新的CSV 在Excel中将结果作为工作簿打开 我的目标是以尽可能高的性能完成此操作。我认为此功能是由提供的,但我不确定如何通过Excel VBA IDE使用它 谢谢 我不
- 将CSV作为表格加载到RAM中
- 删除名为transaction_type的字段记录为“failed”的所有行
- 将结果另存为新的CSV
- 在Excel中将结果作为工作簿打开
- 使用“.TransferText”将CSV从Excel加载到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
oacApp.DoCmd.TransferText acExportDelim, "Standard Output", _
"Table1", "C:\MyNewcsv.csv"
- 删除名为transaction_type的字段记录为“failed”的所有行
- 将结果另存为新的CSV
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
oacApp.DoCmd.TransferText acExportDelim, "Standard Output", _
"Table1", "C:\MyNewcsv.csv"
- 在Excel中将结果作为工作簿打开
HTH您可以使用“文本数据库”并使用ADO(或DAO)来查询文件。有关更多信息,请参阅本文:
这样,您就可以为要查询的文件创建schema.ini文件,并使用标准SQL查询该文件。然后,你可以简单地把结果记录集写成文件。如果你需要它,你可能应该考虑用另一种语言(C java…)进行转换,而只在VBA中执行步骤4。我知道这个选项,但是我对Access(Jet Red)的性能不满意。我真的很想尝试使用ESE(深蓝色)。我会选择更少的功能而不是更高的性能。这看起来很有希望,我会试试看,谢谢!然而,这是喷射红色。我仍然非常想尝试一个JET Blue解决方案,我认为它应该快得多。我通过使用Microsoft.ACE.OLEDB.12.0上的信息并将其更改为Microsoft.ACE.OLEDB.12.0来实现它(安装后。现在,将记录集写入CSV的最佳方式是什么?事实上,我可以直接将其写入Excel电子表格,但我无法让OLEDB正确猜测字段类型,因此它会以文本形式复制到Excel。有关如何修复此问题的任何想法?schema.ini文件设置正确吗?这应该定义字段的数据类型我假设这就是放入Excel的内容。我还没有设置一个。不过,我找到了另一个解决方案。我制作了一个脚本,在列之间循环,并对列执行文本转换(不带分隔符),它决定了字段类型。