自动转换访问数据库

时间:2008-11-11 13:41:01

标签: ms-access csv

我有一个访问数据库,并进行了查询。我需要自动化它,以便每晚可以运行此查询并导出到制表符分隔的csv文件。无法从访问中将查询导出到csv文件。我的问题是,是否有任何工具可以选择某些表,或在mdb文件上执行sql查询,并导出到csv文件?

3 个答案:

答案 0 :(得分:3)

VBScript在Jet引擎上运行良好。但是,我不明白为什么你说“无法从访问中将查询导出到csv文件。”

 Sub TransferCSV()

    DoCmd.TransferText acExportDelim, , "PutNameOfQueryHere", "C:\PutPathAnd\FilenameHere.csv", True

 End Sub

是VBA的常用方式。

编辑: 可以从命令行运行VBScript文件(.vbs)。下面是一些示例VBScript,用于输出制表符分隔文件。

db = "C:\Docs\LTD.mdb"
TextExportFile = "C:\Docs\Exp.txt"

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

cn.Open _
   "Provider = Microsoft.Jet.OLEDB.4.0; " & _
   "Data Source =" & db

strSQL = "SELECT * FROM tblMembers"

rs.Open strSQL, cn, 3, 3

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.CreateTextFile(TextExportFile, True)

a = rs.GetString

f.WriteLine a

f.Close

答案 1 :(得分:3)

实际上,您可以从Access中将查询导出到csv文件。

您可以使用TransferText方法使用宏执行此操作。

宏:

   Name = ExportQuery
   Action = TransferText
   Transfer Type = Export Delimited
   Table Name = [name of your Access query]
   File Name = [path of output file]
   Has Field Names = [Yes or No, as desired]

您可以从命令行执行宏,如下所示:

"[your MS Office path]\msaccess.exe" [your databse].mdb /excl /X ExportQuery /runtime

由于您在宏中遇到TransferText问题,请尝试以下方法:

1)创建一个名为“ExportQuery”的模块。在此模块中,创建一个名为“ExportQuery”的函数:

Function ExportQuery()
    DoCmd.TransferText acExportDelim, , "[your query]", "[output file].csv"
End Function

2)创建一个名为RunExportQuery的宏:

Action = RunCode
Function Name = ExportQuery ()

答案 2 :(得分:-1)

SQL Server Integration Services能够执行您正在讨论的转换。不要被名称所迷惑,因为你不需要SQL Server来自动化和运行包。

http://msdn.microsoft.com/en-us/library/ms141026.aspx