Соберите все имена столбцов в таблицу - PullRequest
0 голосов
/ 28 июня 2019

Я работаю над проектом, цель которого - переименовать все имена таблиц и столбцов в базе данных sql с одного языка на другой. Я собрал все локальные имена таблиц в таблицу ltbl_TableNames и хочу добавить все столбцы этих таблиц в таблицу с именем ltbl_TableColumns.

Я также хочу, чтобы в каждом столбце таблицы была ссылка на имя таблицы. Например, в таблице «Продажи» есть столбец с именем «Сумма». Таблица «Продажи» имеет идентификатор «10000». Я хочу добавить этот идентификатор в столбец с именем TableName_ID для ссылок. Можно ли обойтись без особых хлопот?

Отказ от ответственности: я думаю о процессе переименования. Я хочу собрать только имена столбцов со ссылкой на имя родительской таблицы.

Заранее спасибо за ответы.

1 Ответ

2 голосов
/ 28 июня 2019

Вы можете использовать sys.tables для получения списка table name в вашей базе данных.Аналогично для column name вы можете использовать information_schema.columns, так как это даст записи с table name.Из приведенных выше двух записей вы можете легко получить требуемый результат.

            ;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 

Вы можете попробовать это для своего результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...