将所有列名称收集到表中

时间:2019-06-28 08:37:34

标签: sql sql-server

我正在从事一个项目,该项目的目的是将sql数据库中的所有表名和列名从一种语言重命名为另一种语言。我已经将所有本地表名称收集到一个表ltbl_TableNames中,并希望将这些表的所有列添加到一个名为ltbl_TableColumns的表中。

我还希望每个表列都有指向其表名的链接。例如,表“ Sales”具有名为“ Sum”的列。表“ Sales”的ID为“ 10000”。我想将该ID添加到名为“ TableName_ID”的列中以进行链接。这可能没有很多麻烦吗?

免责声明:我正在考虑重命名过程。我只想收集链接到其父表名称的列名称。

提前感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您可以使用sys.tables获取数据库中table name的列表。 同样,对于column name,您可以使用information_schema.columns,因为这将提供带有table name的记录。 从以上2条记录中,您可以轻松地获得所需的结果。

            ;WITH CTABLE AS 
        ( SELECT * FROM SYS.TABLES WHERE TYPE_DESC = 'USER_TABLE' )
        , COLUMNNAME AS 
        ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS )
        SELECT * INTO NEWTABLE FROM 
        (SELECT CTABLE.NAME AS TABLENAME , COLUMNNAME.COLUMN_NAME, COLUMNNAME.COLUMN_NAME + '_' + CAST(CTABLE.OBJECT_ID AS VARCHAR(15)) AS NEW_COLUMNNAME   
        FROM CTABLE INNER JOIN COLUMNNAME ON CTABLE.NAME = COLUMNNAME.TABLE_NAME ) AS D 

您可以尝试此操作以获得结果。