有一种语法,我可以从不同的数据库中获取表的列?我尝试过使用select column_name from information_schema.columns
where table_name = 'Database_Name.DBO.Table_Name'
但它没有用。请帮帮我,这几天都这样做了。
答案 0 :(得分:7)
你很亲密。 TABLE_NAME只有表格的名称。其余信息位于TABLE_CATALOG和TABLE_SCHEMA中。您可以使用要从中选择的目录限定information_schema:
select column_name from Database_Name.information_schema.columns
where table_name = 'Table_Name' AND table_schema = 'dbo'
答案 1 :(得分:0)
information_schema.columns
系统表中的表名不具有Database_Name.DBO.Table_Name
格式。它们只是将表名作为varchar值。所以试试这样:
USE Database_Name;
select column_name from information_schema.columns
where table_name = 'Table_Name'
答案 2 :(得分:0)
这是我发现的。每个数据库都有自己的information_schema视图,因此不会显示其他数据库中的信息。因此,如果要获取另一个数据库中表的列名,则必须使用该数据库的information_schema视图。
{database name} .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是数据库的名称。
答案 3 :(得分:0)
这对我有用...
select column_name from information_schema.columns
where table_name = 'Table_Name'
没有这部分
AND table_schema = 'dbo'