2008-11-11 2 views
1

У меня есть база данных доступа с запросом. Мне нужно автоматизировать его так, чтобы каждый вечер этот запрос мог запускаться и экспортироваться в файл csv с разделителями табуляции. Невозможно экспортировать запрос в файл csv из доступа. Мой вопрос: есть ли какие-либо инструменты, которые могут выбрать определенные таблицы или выполнить sql-запрос в файле mdb и экспортировать в файл csv?автоматически конвертировать доступ db

ответ

3

На самом деле, вы можете экспортировать запрос в файл CSV из в Access.

Вы можете сделать это с помощью макроса, используя метод TransferText.

Macro:

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() 
3

VBScript отлично работает с двигателем Jet. Однако я не понимаю, почему вы говорите: «Невозможно экспортировать запрос в файл csv изнутри доступа».

Sub TransferCSV() 

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

End Sub 

Это обычный способ в VBA.

EDIT: В командной строке можно запустить файл 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 
+0

В Access 2003 я могу только экспорт в TextData в ASCii записей, а не CSV файл , – 2008-11-11 14:00:22

+0

Вы пробовали DoCmd.TransferText acExportDelim? – Fionnuala 2008-11-11 14:08:52

+0

Я имел в виду вариант с возможностью нажатия, я не был достаточно знаком с VB, чтобы что-то предпринять. – 2008-11-11 14:13:08

-1

Службы интеграции SQL Server способны выполнять преобразование, о котором вы говорите. Не обманывайте себя именем, потому что вам не нужен SQL Server для автоматизации и запуска пакетов.

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

Смежные вопросы