2013-12-03 1 views
5

Я использую пакет RODBC для подключения к базам данных Oracle из R, но мне не удалось слить таблицы из разных баз данных без «загрузки» таблиц (я не хочу чтобы загрузить их, поскольку они слишком большие!). Я хотел бы использовать что-то вроде:RODBC: объединить таблицы из разных баз данных (канал)

DBa=odbcConnect(dsn="DatabaseA",uid="uid",pwd="pwd",readOnly="True") 
DBb=odbcConnect(dsn="DatabaseB",uid="uid",pwd="pwd",readOnly="True") 
sqldf("select a.year, sum(b.var) as sumVar 
     from sqlFetch(DBa,'tableA') a 
      sqlFetch(DBb,'tableB') b 
     where a.ID=b.ID 
     group by a.year") 

Если у кого-то есть идея, это было бы очень полезно! Спасибо заранее.

Lionel

ответ

1

Этот вопрос похож на вопрос here. Ответ, похоже, заключается в том, что RODBC не может получить доступ к двум различным базам данных в одном запросе, используя sqlQuery(...), потому что соединение (канал) зависит от базы данных. Таким образом, либо

(1) do it using downloads (as in your code), or 
(2) have your DBA put both tables in a single database, or 
(3) use something other than R. 
0

В Netezza он работает отлично, используя функцию sqlQuery.

require("RODBC") 

ch <- odbcConnect("NZSQL") 

dim.cust.acc1 <- sqlQuery(ch,"Select * from DB1..DIM_ACCOUNT a inner join DB2..BASE_201707 b on a.id_number=b.id_number limit 1000",believeNRows = FALSE)