我可以使用如下所示的连接字符串连接到Sybase IQ 16数据库:
myDB_conn <- dbConnect(odbc(), "MyDSN_Name")当我运行此命令时,connections视图显示数据库和相应的表/视图的列表。然而,当我尝试使用逻辑布局的here,特别是命名视图时,我总是收到一个错误,关于我的视图没有被找到。
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")

任何建议都将不胜感激。
发布于 2020-07-06 04:53:56
您很可能需要来自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)应该返回如下内容:
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))https://stackoverflow.com/questions/62723999
复制相似问题