从不同的数据库中获取 table 的所有列
Get all columns of a table from a different database
是否有一种语法可以让我从不同的数据库中获取 table 的列?我试过使用 select column_name from information_schema.columns
where table_name = 'Database_Name.DBO.Table_Name'
但它不起作用。请帮帮我,这几天一直在这样做。
你很接近。 TABLE_NAME 刚好是 table 的名字。其余信息在 TABLE_CATALOG 和 TABLE_SCHEMA 中。您可以使用您想要 select 的目录来限定 information_schema 来自:
select column_name from Database_Name.information_schema.columns
where table_name = 'Table_Name' AND table_schema = 'dbo'
information_schema.columns
系统 table 中的 table 名称没有 Database_Name.DBO.Table_Name
格式。他们只是将 Table 名称作为 varchar 值。所以像这样尝试:
USE Database_Name;
select column_name from information_schema.columns
where table_name = 'Table_Name'
这是我发现的。每个数据库都有自己的 information_schema 视图,因此它不会显示来自其他数据库的信息。因此,如果您想在另一个数据库中获取 table 的列名,则必须使用该数据库的 information_schema 视图。
{数据库名称}.information_schema
示例:
SET @Sql = CONCAT('INSERT INTO ', @DBName, '.dbo.colname_table (column_name)
SELECT COLUMN_NAME FROM ', @DBName, '.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''table_name'' AND TABLE_SCHEMA = ''dbo''
ORDER BY ORDINAL_POSITION');
EXECUTE sp_executesql @Sql;
其中@DBName 是数据库的名称。
这对我有用...
select column_name from information_schema.columns
where table_name = 'Table_Name'
没有这部分
AND table_schema = 'dbo'
是否有一种语法可以让我从不同的数据库中获取 table 的列?我试过使用 select column_name from information_schema.columns
where table_name = 'Database_Name.DBO.Table_Name'
但它不起作用。请帮帮我,这几天一直在这样做。
你很接近。 TABLE_NAME 刚好是 table 的名字。其余信息在 TABLE_CATALOG 和 TABLE_SCHEMA 中。您可以使用您想要 select 的目录来限定 information_schema 来自:
select column_name from Database_Name.information_schema.columns
where table_name = 'Table_Name' AND table_schema = 'dbo'
information_schema.columns
系统 table 中的 table 名称没有 Database_Name.DBO.Table_Name
格式。他们只是将 Table 名称作为 varchar 值。所以像这样尝试:
USE Database_Name;
select column_name from information_schema.columns
where table_name = 'Table_Name'
这是我发现的。每个数据库都有自己的 information_schema 视图,因此它不会显示来自其他数据库的信息。因此,如果您想在另一个数据库中获取 table 的列名,则必须使用该数据库的 information_schema 视图。
{数据库名称}.information_schema
示例:
SET @Sql = CONCAT('INSERT INTO ', @DBName, '.dbo.colname_table (column_name)
SELECT COLUMN_NAME FROM ', @DBName, '.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''table_name'' AND TABLE_SCHEMA = ''dbo''
ORDER BY ORDINAL_POSITION');
EXECUTE sp_executesql @Sql;
其中@DBName 是数据库的名称。
这对我有用...
select column_name from information_schema.columns
where table_name = 'Table_Name'
没有这部分
AND table_schema = 'dbo'