2015-02-24 66 views
0

我使用VBscript從Oracle數據庫中提取數據,並將記錄集結果放入csv文件中。這裏是我的代碼,使用VBScript從記錄集複製

Set con = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 

Set ssfile = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\Users\jasons\Documents\Closing_stock\scripts\SuperSession.csv") 

con.Open "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=athena)(PORT=1521)))(CONNECT_DATA=(SID=jasdnf)));User Id=xxxx;Password=xxxx" 
rs.Open "select * from mytable", con, 1, 3 

ssfile.WriteLine "ITEM, ALTITEM" 
rs.MoveFirst 
Do 
ssfile.WriteLine rs("item") & "," & rs("altitem") 
rs.MoveNext 
Loop Until rs.EOF 

rs.Close 
con.Close 
Set con = Nothing 

該代碼工作正常。我遇到的問題是,大約有400萬條記錄,並且需要很長的代碼來遍歷每條記錄並將其粘貼到csv文件中。在VBscript中是否存在與Excel-VBA類似的功能,例如CopyFromRecordset,其中整個記錄集可以轉儲到工作表中。所以我想將記錄集結果轉儲到csv文件中,而不必遍歷每條記錄。我怎樣才能做到這一點?

+0

作爲400萬條記錄,您可能需要爲較小的塊重複該過程,但您可以嘗試使用記錄集的[GetString](https://msdn.microsoft.com/zh-cn/)。 com/en-us/library/windows/desktop/ms676975%28v = vs.85%29.aspx)方法 – 2015-02-24 09:39:32

回答

0

你可以嘗試使用GetString(),它返回所有(或可選的子集)您的記錄作爲一個字符串,您可以指定分隔符等:

Set con = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 

Set ssfile = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\Users\jasons\Documents\Closing_stock\scripts\SuperSession.csv") 

con.Open "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=athena)(PORT=1521)))(CONNECT_DATA=(SID=jasdnf)));User Id=xxxx;Password=xxxx" 
rs.Open "select * from mytable", con, 1, 3 

ssfile.WriteLine "ITEM, ALTITEM" 
rs.MoveFirst 

ssfile.writeline rs.GetString(2, , ",") 

rs.Close 
con.Close 
Set con = Nothing 

不知道,如果你需要提供一個rowdelimiter或者不是,您可能需要嘗試 - 例如,嘗試rs.GetString(2, , ",", vbNewLine)