r - 使用 ODBC::dbConnect 和 dplyr 连接到 Sybase IQ 数据库 - 未找到表名
问题描述
我可以使用如下连接字符串连接到我的 Sybase IQ 16 数据库:
myDB_conn <- dbConnect(odbc(), "MyDSN_Name")
当我运行此命令时,连接视图会显示数据库列表和相应的表/视图。但是,当我尝试使用此处列出的专门命名视图的逻辑时,我不断收到有关未找到视图的错误消息。
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
在连接窗口中,我可以看到数据库和视图,但是当我使用上面的代码时,我收到一个未找到的表名。
nanodbc/nanodbc.cpp:1374: 42S02: [Sybase][ODBC Driver][Sybase IQ]Table 'OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME' not found
我还查看了列出 OFFSHORE_BOB 模式中的表,我可以在那里看到感兴趣的表:
y <- dbListTables(gopher_conn, schema = 'OFFSHORE_BOB')
然后我搜索了感兴趣的视图,我可以在那里看到它,所以我很难理解为什么我不能使用这个代码
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
任何建议将不胜感激。
解决方案
您很可能需要in_schema
来自 dbplyr 的命令。例如:
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)
应该返回类似:
SELECT *
FROM "OFFSHORE_BOB"."SOME_VIEW_OR_TABLE_NAME"
(如果您的表或模式名称包含非标准字符,则 dbplyr 会插入引号。例如abc-123
,并且3-4
本身不是可接受的表名称,但被引用"abc-123"
并且"3-4"
它们可以是表或模式名称。)
请注意,如果需要,您还可以在架构名称中包含数据库名称:
remote_table <- tbl(db_connection, from = in_schema(paste0(db,".",schema), table_name))
推荐阅读
- c# - 如何输出到控制台布尔?
- ios - 播放内联视频后,从 wkwebview 中删除 AVPlayerViewController
- arrays - 如果条件为真,Excel 返回数组
- python - Azure Speech SDK 使用 python 从流中语音到文本
- reactjs - Firebase - 预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 x-firebase-gmpid
- css - 用svg代码直接输入html一些问题和一些问题
- odoo - 从 odoo 模型 (odoo 12) 访问 oneToMany 数据
- powershell - 更新 XML 文件中的文本
- bash - 将浮点数作为字符串并在 Bash 中进行算术运算
- curl - 标题和正文的 curl 参数 CURLOPT_POSTFIELDS