获取所有 librefs 的服务器信息
Get server info for all librefs
如何为我在 SAS
中可用的所有库获取带有变量 libref
和 server_id
(或任何服务器信息)的 table?
我的目标是汇总所有这些库的数据物理位置,以便在从不同服务器获取数据时编写高效的查询。
查看视图 SASHELP.VLIBNAM(或使用 PROC SQL 时 DICTIONARY.LIBNAMES)中可用的信息。
这是一个实用程序宏,可以从给定库引用的视图中提取引擎、主机和架构。我已经将它用于 TERADATA、ORACLE 和 ODBC 引擎。 dblibchk.sas
根据 Tom 的代码和建议,我构建了 table 我需要的代码:
PROC SQL;
SELECT distinct libname, engine, path,
CASE WHEN engine in('BASE','V9') THEN 'SAS' ELSE catx('_',engine,path) END AS server
FROM DICTIONARY.LIBNAMES ;
QUIT;
图书馆 SASHELP 中有一些 table 可以帮助您,就像 Tom 提到的那样。
您还可以使用 VTABLE 将包含所有 tables,其中库和 VCOLUMN 将包含从库到 table 到列的详细信息以及使用的数据类型及其长度。
它们的工作方式有点像来自 information_schema 数据库的 SQL 数据。
或者,在数据集上使用 proc 内容也会 return 它的所有组件,您可以将其放入 table 或宏变量中。
希望这对您有所帮助!
如何为我在 SAS
中可用的所有库获取带有变量 libref
和 server_id
(或任何服务器信息)的 table?
我的目标是汇总所有这些库的数据物理位置,以便在从不同服务器获取数据时编写高效的查询。
查看视图 SASHELP.VLIBNAM(或使用 PROC SQL 时 DICTIONARY.LIBNAMES)中可用的信息。
这是一个实用程序宏,可以从给定库引用的视图中提取引擎、主机和架构。我已经将它用于 TERADATA、ORACLE 和 ODBC 引擎。 dblibchk.sas
根据 Tom 的代码和建议,我构建了 table 我需要的代码:
PROC SQL;
SELECT distinct libname, engine, path,
CASE WHEN engine in('BASE','V9') THEN 'SAS' ELSE catx('_',engine,path) END AS server
FROM DICTIONARY.LIBNAMES ;
QUIT;
图书馆 SASHELP 中有一些 table 可以帮助您,就像 Tom 提到的那样。 您还可以使用 VTABLE 将包含所有 tables,其中库和 VCOLUMN 将包含从库到 table 到列的详细信息以及使用的数据类型及其长度。 它们的工作方式有点像来自 information_schema 数据库的 SQL 数据。
或者,在数据集上使用 proc 内容也会 return 它的所有组件,您可以将其放入 table 或宏变量中。 希望这对您有所帮助!