使用 ODBC::dbConnect 和 dplyr 连接到 Sybase IQ 数据库 - table 找不到名称
Using ODBC::dbConnect and dplyr to connect to Sybase IQ database - table name not found
我可以使用以下连接字符串连接到我的 Sybase IQ 16 数据库:
myDB_conn <- dbConnect(odbc(), "MyDSN_Name")
当我 运行 此命令时,连接视图显示数据库列表和相应的 tables/views。但是,当我尝试使用布局的逻辑 here 专门命名视图时,我不断收到有关未找到我的视图的错误消息。
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
在连接 window 中,我可以看到数据库和视图,但是当我使用上面的代码时,我收到 table 找不到名称。
nanodbc/nanodbc.cpp:1374: 42S02: [Sybase][ODBC Driver][Sybase IQ]Table 'OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME' not found
我还查看了在 OFFSHORE_BOB 架构中列出 table,我可以在其中看到感兴趣的 table:
y <- dbListTables(gopher_conn, schema = 'OFFSHORE_BOB')
然后我搜索了感兴趣的视图,我可以在那里看到它,所以我很困惑为什么我不能使用这个代码
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
如有任何建议,我们将不胜感激。
您很可能需要来自 dbplyr 的 in_schema
命令。例如:
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)
应该 return 像这样:
SELECT *
FROM "OFFSHORE_BOB"."SOME_VIEW_OR_TABLE_NAME"
(引号由 dbplyr 插入,以防您的 table 或模式名称包含非标准字符。例如 abc-123
和 3-4
不接受 table table 名称本身,但引用 "abc-123"
和 "3-4"
它们可以是 table 或模式名称。)
请注意,如果需要,您还可以在架构名称中包含数据库名称:
remote_table <- tbl(db_connection, from = in_schema(paste0(db,".",schema), table_name))
我可以使用以下连接字符串连接到我的 Sybase IQ 16 数据库:
myDB_conn <- dbConnect(odbc(), "MyDSN_Name")
当我 运行 此命令时,连接视图显示数据库列表和相应的 tables/views。但是,当我尝试使用布局的逻辑 here 专门命名视图时,我不断收到有关未找到我的视图的错误消息。
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
在连接 window 中,我可以看到数据库和视图,但是当我使用上面的代码时,我收到 table 找不到名称。
nanodbc/nanodbc.cpp:1374: 42S02: [Sybase][ODBC Driver][Sybase IQ]Table 'OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME' not found
我还查看了在 OFFSHORE_BOB 架构中列出 table,我可以在其中看到感兴趣的 table:
y <- dbListTables(gopher_conn, schema = 'OFFSHORE_BOB')
然后我搜索了感兴趣的视图,我可以在那里看到它,所以我很困惑为什么我不能使用这个代码
test <- tbl(myDB_conn, "OFFSHORE_BOB.SOME_VIEW_OR_TABLE_NAME")
如有任何建议,我们将不胜感激。
您很可能需要来自 dbplyr 的 in_schema
命令。例如:
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)
应该 return 像这样:
SELECT *
FROM "OFFSHORE_BOB"."SOME_VIEW_OR_TABLE_NAME"
(引号由 dbplyr 插入,以防您的 table 或模式名称包含非标准字符。例如 abc-123
和 3-4
不接受 table table 名称本身,但引用 "abc-123"
和 "3-4"
它们可以是 table 或模式名称。)
请注意,如果需要,您还可以在架构名称中包含数据库名称:
remote_table <- tbl(db_connection, from = in_schema(paste0(db,".",schema), table_name))