1

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

4

3 回答 3

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
于 2008-11-11T13:44:43.020 回答
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 ()
于 2008-11-11T14:06:47.937 回答
-1

SQL Server Integration Services 能够完成您所说的转换。不要被名称所迷惑,因为您不需要 SQL Server 来自动化和运行包。

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

于 2008-11-11T13:45:44.500 回答