excelvba中ADO从Oracle数据库查询大表时的内存问题

excelvba中ADO从Oracle数据库查询大表时的内存问题,oracle,excel,vba,ado,adodb,Oracle,Excel,Vba,Ado,Adodb,我需要使用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;

我需要使用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可能试图在记录集中存储所有查询的数据,这将是几GB的数据,因此使用了太多的RAM

我需要找到一种方法来限制一次存储在RAM中的行数,这样我就可以下载并保存任意多的行,而不会对RAM产生任何问题

我研究过,但我找不到任何关于这个的东西


谢谢。

可能是您应该尝试将
光标位置设置为
adUseServer

您是否尝试过在
ADODB.RecordSet
对象上使用该属性?