我正在从事一个项目,该项目的目的是将sql数据库中的所有表名和列名从一种语言重命名为另一种语言。我已经将所有本地表名称收集到一个表ltbl_TableNames中,并希望将这些表的所有列添加到一个名为ltbl_TableColumns的表中。
我还希望每个表列都有指向其表名的链接。例如,表“ Sales”具有名为“ Sum”的列。表“ Sales”的ID为“ 10000”。我想将该ID添加到名为“ TableName_ID”的列中以进行链接。这可能没有很多麻烦吗?
免责声明:我正在考虑重命名过程。我只想收集链接到其父表名称的列名称。
提前感谢您的回答。
答案 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
您可以尝试此操作以获得结果。