Obtenir toutes les colonnes d'une table à partir d'une database différente

existe-t-il une syntaxe dans laquelle je peux get les colonnes d'une table à partir d'une database différente? J'ai essayé d'utiliser select column_name from information_schema.columns where table_name = 'Database_Name.DBO.Table_Name' Mais ça ne marche pas. S'il vous plaît, aidez-moi, faites cela depuis des jours. Merci d'avance.

Tu es proche. TABLE_NAME a juste le nom de la table. Le rest de l'information est dans TABLE_CATALOG et TABLE_SCHEMA. Vous pouvez qualifier information_schema avec le catalogue que vous voulez sélectionner:

 select column_name from Database_Name.information_schema.columns where table_name = 'Table_Name' AND table_schema = 'dbo' 

Les noms de table dans la table système information_schema.columns n'ont pas le format Database_Name.DBO.Table_Name . Ils ont juste le nom de Table comme une valeur de varchar. Alors essayez comme ça:

 USE Database_Name; select column_name from information_schema.columns where table_name = 'Table_Name' 

C'est ce que j'ai découvert. Chaque database possède sa propre vue information_schema afin de ne pas afficher les informations provenant des autres bases de données. Donc, si vous voulez get les noms de colonnes pour une table dans une autre database, vous devez utiliser la vue information_schema de cette database.

{nom de la database} .information_schema

Exemple:

 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; 

où @DBName est le nom de la database.