Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R RODBC显示所有表格_R_Odbc_Rodbc - Fatal编程技术网

R RODBC显示所有表格

R RODBC显示所有表格,r,odbc,rodbc,R,Odbc,Rodbc,我正在尝试使用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(

我正在尝试使用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中执行此操作,但我们可以通过编程将所有数据库中的所有表的数据集拼凑在一起,而不是重复使用xyz;语句,从master..sysdatabases获取数据库列表,并将其作为catalog参数传递给sqlTables

出于保密原因,我无法显示任何输出,但它会生成正确的结果。当然,在你的情况下,你可能想做一些

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)

此SQL将获得所有数据库的列表:从master..sysdatabases中选择名称@太好了,谢谢。@nrussell:你想把它放在答案里,我来选择它?
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)