RODBC sqlFetch 用于服务器上多个数据库中的表

RODBC sqlFetch for tables in multiple databases on the server

提问人:Barbara Hutniczak 提问时间:7/8/2023 最后编辑:Barbara Hutniczak 更新时间:7/8/2023 访问量:27

问:

我正在尝试使用 R 包 RODBC 获取/更新 sql 数据库中的表。

SQL 查询的选项 1 工作正常,但是如何应用相同的逻辑并在选项 2(不起作用)中引用特定数据库(有多个)进行获取/更新/保存?

REF 选项从默认数据库(即等效于 XXX,而不是 XXX_Test)中获取表

channel <- odbcConnect(dsn="XXX")

# OPTION 1
# sql statements
Table_sql <- "select * from XXX_Test.dbo.Table"

# query the DB
Table <- sqlQuery(channel, query=Table_sql, as.is = TRUE)

#OPTION 2
Table2<-sqlFetch(channel,"XXX_Test.dbo.Table")

#Error in odbcTableExists(channel, sqtable) : 
#  ‘XXX_Test.dbo.Table’: table not found on channel

### REF
Table3<-sqlFetch(channel,"Table")

谢谢你的帮助

SQL R RODBC

评论

0赞 r2evans 7/8/2023
您的代码似乎是合法的,并且对我有用(详细信息:我正在使用 + 连接到 SQL Server)。我不知道它会有所不同,但是由于您正在编辑数据库名称......也许?如果您的 DBMS 不使用括号,也许(在大多数/所有 DBMS 中使用双引号来描述表/列名称等标识符,不要与描述字符串文字的单引号混淆)。请注意,我在整个查询中使用了单引号,这是 R 的事情,DBMS 看不到这些。DBIodbc"[XXX_Test].dbo.Table"'"XXX_Test".dbo.Table'

答: 暂无答案