我需要使用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造成任何问题。
我研究过,但我找不到任何关于此事的内容。
谢谢。
答案 0 :(得分:2)
您可以尝试将CursorLocation
设置为adUseServer
...