我有一个VBScript文件,它从SQL Server数据库表中提取数据,然后将结果写入CSV文件。我的问题是每条记录一次写入一行文件。我想在Excel VBA中使用CopyFromRecordset
时以类似的方式将记录集粘贴到CSV文件中。有没有办法做到这一点?这是我当前的代码,一次读取一行记录集,
Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set outFile = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\Users\JASON SAMUELS\Desktop\VBS\test.csv")
con.Open "Provider=SQLOLEDB.1;Password=pwd123;Persist Security Info=True;User ID=TEST;Initial Catalog=DemoDB;Data Source=JASONPC\SQLEXPRESS"
rs.Open "SELECT * FROM MyTable", con, 1,3
rs.MoveFirst
Do
'WScript.Echo rs("Name") & " " & rs("Surname")
outFile.WriteLine rs("Name") & "," & rs("Surname")
rs.MoveNext
Loop Until rs.EOF
rs.close
con.Close
Set con = Nothing
答案 0 :(得分:0)
我怀疑是否有任何内置函数可以让你一次性导出csv文件中的所有记录集。 但你有恕我直言的一些选择: - 通过创建包含csv数据的缓冲区字符串来批量写入输出:
'vbcrlf is a carriage return+line feed : Chr(10) & Chr(11)
Do
strOutputString = strOutputString & rs("Name") & "," & rs("Surname") & vbcrlf
rs.MoveNext
Loop Until rs.EOF
outFile.WriteLine strOutputString
希望有所帮助。
答案 1 :(得分:0)
通过PowerShell可以更轻松地完成此操作。假设您在系统上安装了SSMS,则运行脚本:
invoke-sqlcmd -serverinstance 'JASONPC\SQLEXPRESS' -username TEST -password pwd123 -query "select * from mytable" | export-csv -notypeinfo -path "C:\Users\JASON SAMUELS\Desktop\VBS\test.csv" -encoding ASCII -noclobber
但仍有更快的选项,例如bcp