Экспорт таблиц из Accessdb с помощью R (RDCOMClient)

Я хочу экспортировать таблицы из базы данных Access в .txt-файлы.

Вот мой код:

library(RDCOMClient)
#Path of txt File
destPath = 'C:\\Path\\to\\Hello.txt'
#Path of AccessDB
strDbName = "C:\\MyPath\\AccessDB.accdb"
#launche Access App
oApp = COMCreate("Access.Application")
#open the AccessDB
oApp$OpenCurrentDatabase(strDbName)
#Export the table to txt using transferText Method
acExportDelim  <- 0
exportObj = oApp[["DoCmd"]]
exportObj$TransferText(acExportDelim,"NameOfTable", destPath, TRUE)
oApp$Quit()
exportObj <- NULL
oApp <- NULL

не могу понять почему не работает...

Это сообщение об ошибке, которое я получаю все время:

<checkErrorInfo> 80020009 
Error: exception occurred.

Любая помощь приветствуется! («Подход RODBC» с использованием 32-битного R не работает для нужного мне объекта)

Заранее спасибо...


person sneakyErich    schedule 18.10.2017    source источник
comment
Подход RODBC с использованием 32-битного R не работает для нужного мне объекта ... какая у вас разрядная версия R (Sys.info()$machine)? Какая у вас разрядная версия MS Office (откройте Access или любое приложение Office, в фоновом режиме нажмите кнопку «Учетная запись \ О программе», прочитайте верхнюю строку)?   -  person Parfait    schedule 18.10.2017
comment
На данный момент я делаю следующее: - Запускаем Rscript.exe (32-битный) с помощью (system()) - запускаем скрипт с sql-запросами и сохраняем таблицы как .RData - Загружаем файлы .RData в мою глобальную среду Env. Проблема в том, что только для одной из всех таблиц это не работает. Настройки по умолчанию в Access для одного из атрибутов этой таблицы - установить стандартное значение... Я думаю, что когда я получаю таблицу с моим скриптом, стандартное значение попадает в последнюю пустую строку, и поэтому таблица теряет свою согласованность ... Возникает ошибка внешнего интерфейса, и Rscript.exe ломается...   -  person sneakyErich    schedule 19.10.2017


Ответы (1)


Аргументы вашего DoCmd.TransferText неверны. Второй аргумент, куда вы указали имя таблицы, должен быть именем спецификации экспорта. Поскольку вы ошибаетесь в этом, все остальные аргументы тоже неверны.

Сначала создайте именованную спецификацию экспорта в Access (руководство). Затем используйте это в своей команде для экспорта таблицы.

Кроме того, вы не можете использовать перечисление acExportDelim, так как вы используете поздние привязки, поэтому вам придется использовать цифру для этого значения (2)

Окончательная команда экспорта:

oApp[["DoCmd"]]$TransferText(2,"ExportSpecificationName", "TableName", destPath, TRUE)

Обратите внимание, что вам, вероятно, лучше попытаться исправить подключение ODBC, если это возможно.

person Erik A    schedule 18.10.2017
comment
OP также может оставить спецификацию экспорта пустой: "" - person Parfait; 18.10.2017
comment
@Parfait Это может быть или не быть правдой в зависимости от настроек локали, см. xlsx-working">этот вопрос. Чтобы быть в безопасности, я предлагаю использовать один. - person Erik A; 18.10.2017
comment
Большое спасибо за ваш ответ, Эрик. Работает :)) @Parfait спасибо за подсказку с пустой спецификацией... Тоже работает! теперь это просто идеальное решение для меня. вы, ребята, самый ценный игрок дня :D - person sneakyErich; 19.10.2017