首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ODBC::dbConnect和dplyr连接到Sybase IQ数据库-找不到表名

使用ODBC::dbConnect和dplyr连接到Sybase IQ数据库-找不到表名
EN

Stack Overflow用户
提问于 2020-07-04 08:06:23
回答 1查看 162关注 0票数 0

我可以使用如下所示的连接字符串连接到Sybase IQ 16数据库:

代码语言:javascript
复制
myDB_conn <- dbConnect(odbc(), "MyDSN_Name")

当我运行此命令时,connections视图显示数据库和相应的表/视图的列表。然而,当我尝试使用逻辑布局的here,特别是命名视图时,我总是收到一个错误,关于我的视图没有被找到。

代码语言:javascript
复制
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")

在连接窗口中,我可以看到数据库和视图,但是当我使用上面的代码时,我收到一个未找到的表名。

代码语言:javascript
复制
nanodbc/nanodbc.cpp:1374: 42S02: [Sybase][ODBC Driver][Sybase IQ]Table 'OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME' not found

我还查看了OFFSHORE_BOB模式中的表的列表,我可以在其中看到感兴趣的表:

代码语言:javascript
复制
y <- dbListTables(gopher_conn, schema = 'OFFSHORE_BOB')

然后我搜索了感兴趣的视图,我可以在那里看到它,所以我被难倒了,为什么我不能使用这段代码

代码语言:javascript
复制
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 04:53:56

您很可能需要来自dbplyr的in_schema命令。例如:

代码语言:javascript
复制
schema = "OFFSHORE_BOB"
tbl_name = "SOME_VIEW_OR_TABLE_NAME"

remote_table <- tbl(db_connection, from = in_schema(schema, tbl_name))

然后,show_query(remote_table)应该返回如下内容:

代码语言:javascript
复制
SELECT *
FROM "OFFSHORE_BOB"."SOME_VIEW_OR_TABLE_NAME"

(如果您的表名或模式名包含非标准字符,则由dbplyr插入引号。例如,abc-1233-4本身不是可接受的表名,但带引号的"abc-123""3-4"可以是表名或模式名。)

请注意,如果需要,还可以在模式名称中包括数据库名称:

代码语言:javascript
复制
remote_table <- tbl(db_connection, from = in_schema(paste0(db,".",schema), table_name))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62723999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档