将MySQL表导出为.csv文件

时间:2014-01-14 22:31:18

标签: mysql sql access-vba

这是我在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表(我想从这里提取数据)。

我错过了什么?

1 个答案:

答案 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

希望这有帮助。