2015-02-04 1 views
1

Я запускаю R локально, и база данных находится на удаленном сервере MS SQL.RJDBC не может прочитать таблицу с сервера MSSQL

Я делаю свою подготовительную работу:

require(RJDBC) 
# initialize the driver 
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "C:/files/sqljdbc4.jar") 
# establish the connection 
conn <- dbConnect(drv, "jdbc:sqlserver://DBserverName.example.com;instanceName=myINS;databaseName=myDB", "myUser", "myPass") 

Тогда я проверить, могу ли я прочитать заголовок некоторых таблиц:

dbListFields(conn,"table1") 

Works. Далее я пытаюсь прочитать полную таблицу:

dbReadTable(conn,"table1") 

терпит неудачу с:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for SELECT * FROM table1 (Invalid object name 'table1'.) 

Делаем это SQL путь также не:

sqlText <- paste("SELECT FROM \"table1\" ") 
queryResults <- dbGetQuery(conn, sqlText) 

завершается с:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for SELECT * FROM "table1" (Invalid object name 'table1'.) 

и без котировок:

sqlText <- paste("SELECT FROM table1 ") 
queryResults <- dbGetQuery(conn, sqlText) 

завершается с:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for SELECT * FROM table1 (Invalid object name 'table1'.) 

Любая идея, почему это не удается?

ответ

0

Для фактического чтения из таблицы необходимо указать его иерархический префикс. Следующие работали:

dbReadTable(conn,"groupingA.table1") 

Аналогично работает:

sqlText <- paste("SELECT FROM groupingA.table1 ") 
queryResults <- dbGetQuery(conn, sqlText) 
0

Дайте точное имя таблицы, которая включает имя базы данных, если существует DBO и имя таблицы, например:

queryResults <- dbGetQuery(conn, "SELECT * FROM [dbname].[dbo].[tablename]") 
Смежные вопросы