RJDBC 无法从 MSSQL 服务器读取 table
RJDBC can't read table from MSSQL server
我在本地 运行 R,数据库远程位于 MS SQL 服务器上。
我做我的准备工作:
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")
然后我检查我是否可以阅读某些 table 的 header:
dbListFields(conn,"table1")
有效。接下来我尝试阅读完整的 table:
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'.)
知道为什么会失败吗?
要实际从 table 中读取,需要使用其分层 前缀 来指定它。以下工作:
dbReadTable(conn,"groupingA.table1")
同样有效:
sqlText <- paste("SELECT FROM groupingA.table1 ")
queryResults <- dbGetQuery(conn, sqlText)
给出包含数据库名称的 table 的确切名称,如果存在 dbo 和 table 名称,例如:
queryResults <- dbGetQuery(conn, "SELECT * FROM [dbname].[dbo].[tablename]")
我在本地 运行 R,数据库远程位于 MS SQL 服务器上。
我做我的准备工作:
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")
然后我检查我是否可以阅读某些 table 的 header:
dbListFields(conn,"table1")
有效。接下来我尝试阅读完整的 table:
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'.)
知道为什么会失败吗?
要实际从 table 中读取,需要使用其分层 前缀 来指定它。以下工作:
dbReadTable(conn,"groupingA.table1")
同样有效:
sqlText <- paste("SELECT FROM groupingA.table1 ")
queryResults <- dbGetQuery(conn, sqlText)
给出包含数据库名称的 table 的确切名称,如果存在 dbo 和 table 名称,例如:
queryResults <- dbGetQuery(conn, "SELECT * FROM [dbname].[dbo].[tablename]")