在Excel VBA中使用ADO从Oracle数据库查询巨大表的内存问题
我需要使用VBA从Oracle数据库查询大数据表(2.000.000行和130列),并将其保存到文本文件中。
我正在使用的代码如下
Dim DBConnection As ADODB.connection Dim RecordSet As ADODB.RecordSet 'prepare string for connection Dim strConnection As String strConnection = "DRIVER=Oracle in OraClient11g_Home32;SERVER=" & database & " ;UID=" & username & ";PWD=" & password & ";DBQ=" & database & ";" Set DBConnection = New ADODB.connection 'open connection With DBConnection .CommandTimeout = False .ConnectionString = strConnection .CursorLocation = adUseClient .Open End With Set RecordSet = New ADODB.RecordSet RecordSet.Open strSQLQuery, DBConnection, adOpenForwardOnly, adLockReadOnly Do While RecordSet.EOF = False str = "" For x = 0 To RecordSet.Fields.Count - 1 If IsNumeric(RecordSet.Fields(x).Value) Then dx = RecordSet.Fields(x).Value str = str & Format(dx, "0.############") & delimiter Else str = str & RecordSet.Fields(x).Value & delimiter End If Next x Print #FH, str RecordSet.MoveNext Loop
问题是,可能ADO试图在logging集中存储所有查询的数据,这将是几GB的数据,因此使用太多的RAM。
我需要find一种方法来限制一次存储在RAM中的行数,以便我可以下载并保存尽可能多的行,而不会对RAM造成任何问题。
我研究过,但是我找不到任何关于这个的东西。
谢谢。
可能是你应该尝试将CursorLocation
设置为adUseServer
…