Publicado el Dejar un comentario

Insertar datos en una tabla extrayéndolos de otras tablas con Transact-SQL

Necesitábamos insertar datos en una tabla extrayéndolos de otras tablas. Todas las tablas con la misma estructura. Para evitar escribir muchas veces la misma instrucción con las diferentes tablas creamos el siguiente script  Transact-SQL en Sql Server 2000:

USE base_de_datos

DECLARE cursor_de_tablas CURSOR
FOR
  SELECT TABLE_NAME
  FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ‘tablas%’

OPEN cursor_de_tablas

DECLARE @nombre_tabla sysname

FETCH NEXT FROM cursor_de_tablas INTO @nombre_tabla

WHILE (@@FETCH_STATUS <> -1)
BEGIN
  IF (@@FETCH_STATUS <> -2)
  BEGIN
    SELECT @nombre_tabla = RTRIM(@nombre_tabla)
    EXEC (‘INSERT INTO tabla_destino SELECT * FROM ‘ + @nombre_tabla )
  END
  FETCH NEXT FROM cursor_de_tablas INTO @nombre_tabla
END
CLOSE cursor_de_tablas
DEALLOCATE cursor_de_tablas

Con este script se insertarán los datos de todas las tablas que empiezan con el nombre tablas en la base de datos llamada base_de_datos a la tabla tabla_destino en la misma base de datos.

Espero y les sirva.

Deja un comentario