Estoy trabajando en un proyecto, el propósito es cambiar el nombre de todos los nombres de las tablas y los nombres de columnas en la base de datos SQL de un idioma a otro. He recopilado todos los nombres de las tablas locales en una tabla LTBL_TABLENAMES y desea agregar todas las columnas de estas tablas a una tabla llamada LTBL_TABLECOLOUMS.

También quiero que cada columna de tabla tenga un enlace a su nombre de tabla. Por ejemplo, la tabla 'Ventas' tiene una columna llamada 'Suma'. La tabla 'Ventas' tiene la identificación '10000'. Quiero agregar esa ID en una columna llamada 'Tablename_ID' para fines de enlace. ¿Es esto posible hacer sin mucha molestia?

Descargo de responsabilidad: Estoy pensando en el proceso de cambio de nombre. Solo quiero recopilar los nombres de las columnas con un enlace a su nombre de tabla para padres.

Gracias por adelantado por las respuestas.

-1
AleksanderVH 28 jun. 2019 a las 11:37

1 respuesta

La mejor respuesta

Puede usar sys.tables para obtener la lista de table name en su base de datos. De manera similar para column name puede usar information_schema.columns ya que esto dará registros con table name. Desde los 2 registros anteriores, puede hacerlo fácilmente.

            ;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 

Puede intentar esto por su resultado.

2
DarkRob 28 jun. 2019 a las 09:27