автоматически конвертировать доступ в БД - PullRequest
1 голос
/ 11 ноября 2008

У меня есть база данных доступа с выполненным запросом. Мне нужно автоматизировать его так, чтобы каждую ночь этот запрос мог запускаться и экспортироваться в CSV-файл с разделителями табуляции. Невозможно экспортировать запрос в CSV-файл изнутри доступа. У меня вопрос, есть ли какие-либо инструменты, которые могут выбрать определенные таблицы или выполнить SQL-запрос к файлу MDB и экспортировать в CSV-файл?

Ответы [ 3 ]

3 голосов
/ 11 ноября 2008

На самом деле вы можете экспортировать запрос в 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 голосов
/ 11 ноября 2008

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 голосов
/ 11 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...