这是我在VBA的第一天。我试图在VBA中使用MySQL查询导出MS Access中的.csv文件。我尝试过使用此代码:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Set db = CurrentDb
sql = "SELECT wo_id FROM WorkOrder"
Set rs = db.OpenRecordset(sql)
DoCmd.TransferText acExportDelim, , "rs", "C:\export.csv", True
rs.Close
Set rs = Nothing
给了我:
运行时错误' 3011':
Microsoft Office Access数据库引擎找不到对象' rs。确保对象存在并且您正确拼写其名称和路径名
更多信息
我有一个名为WorkOrder的MySQL表(我想从这里提取数据)。
我错过了什么?
答案 0 :(得分:3)
您只能使用DoCmd.TransferText
导出MS-Access对象(表或查询)。如果您有一个名为qryOutput
的查询,则可以将其导出:
DoCmd.TransferText acExportDelim, , "qryOutput", "C:\export.csv", True
您可以在运行时创建查询(使用db.CreateQueryDef
),导出并删除它。
如果您正在使用MySQL,可能更容易直接从命令行导出数据:
c:\> mysql -h YourHost -u YourUser -pYourPassword dbYourDatabase -e"SELECT wo_id FROM WorkOrder" > c:\export.txt
这将创建一个以制表符分隔的文本文件,其中包含查询结果(包括标题)。
在类似Unix的命令行上,您可以使用sed
将此输出即时转换为逗号分隔的文本文件:
$ mysql [connectionParameters] -e"select..." | sed 's/\t/,/g' > export.csv
我不知道是否有任何pure-windows命令行实用程序来执行此操作。我使用Cygwin来做这类事情。如果要使用它,请务必使用Cygwin安装程序安装sed
。
希望这有帮助。