gpt4 book ai didi

R RODBC 显示所有表

转载 作者:行者123 更新时间:2023-12-04 10:30:17 25 4
gpt4 key购买 nike

我正在尝试使用 R/RODBC 对 MSSQL 2008 R2 数据库的结构进行编目。我已经设置了一个 DSN,通过 R 连接并使用了 sqlTables()命令,但这只是获取“系统数据库”信息。

library(RODBC)

conn1 <- odbcConnect('my_dsn')
sqlTables(conn1)

但是,如果我这样做:
library(RODBC)

conn1 <- odbcConnect('my_dsn')
sqlQuery('USE my_db_1')
sqlTables(conn1)

我得到与 my_db_1 数据库关联的表。有没有办法查看所有数据库和表,而无需为每个数据库和表手动键入单独的 USE 语句?

最佳答案

可能有也可能没有更惯用的方法来直接在 SQL 中执行此操作,但是我们可以通过从USE xyz;并将这些作为 master..sysdatabases 传递论据 catalog - 例如

library(RODBC)
library(DBI)
##
tcon <- RODBC::odbcConnect(
dsn = "my_dsn",
uid = "my_uid",
pwd = "my_pwd"
)
##
db_list <- RODBC::sqlQuery(
channel = tcon,
query = "SELECT name FROM master..sysdatabases")
##
R> RODBC::sqlTables(
channel = tcon,
catalog = db_list[14, 1]
)

(出于保密原因,我无法显示任何输出,但它会产生正确的结果。)当然,在您的情况下,您可能想要做类似的事情
all_metadata <- lapply(db_list$name, function(DB) {
RODBC::sqlTables(
channel = tcon,
catalog = DB
)
})
# or some more efficient variant of data.table::rbindlist...
meta_df <- do.call("rbind", all_metadata)

关于R RODBC 显示所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com