miércoles, 27 de agosto de 2008

Generar Inserts automaticamente en SQL Server 2005


Para obtener los inserts de cualquier tabla que se tenga en una base de SQL Server 2005 se puede usar un stored procedure que se encuentra instalado en la base Master dentro de System Databases. El stored procedure se llama "sp_generate_inserts" y se utiliza de la siguiente manera

exec sp_generate_inserts 'nombre_de_tabla'

y la salida van a ser los inserts correspondientes para usarlos en donde se desee. Muy util si la tabla posee muchos campos o si la cantidad de registros supera un tamaño manejable para hacerlo a mano.

4 comentarios:

Alberto dijo...

Muy interesante y util, pero ....

(jo, siempre tiene que haber un pero)

... pero en mi sistema no existe ese procedimeinto. Lo he buscado en la red y lo he encontrado en http://vyaskn.tripod.com/code/generate_inserts.txt pero al ejectuarlo me sale:

Using Master database
Checking for the existence of this procedure
Mens. 2812, Nivel 16, Estado 62, Línea 3
Could not find stored procedure 'master.dbo.sp_MS_upd_sysobj_category'.
Created the procedure
Mens. 2812, Nivel 16, Estado 62, Línea 4
Could not find stored procedure 'master.dbo.sp_MS_upd_sysobj_category'.
Granting EXECUTE permission on sp_generate_inserts to all users
Done

¿Sabes si puedo obtener ese y los demás procedimientos de algún sitio?. ¿Tal vez microsoft?.

Mi version de sql server es:
9.00.1399.06 Developer Edition


un saludo

Alberto dijo...

Hola

he solucionado mi problema. Copio la solucion por si le interesa a alguien.

Despues de comilar el SP hay que llamar a:

EXEC master.dbo.sp_MS_marksystemobject sp_generate_inserts

La llamada a usar no era
EXEC sp_generate_inserts 'NombreTabla'

sino
EXEC sp_generate_inserts @table_name='NombreTabla'


De todas formas sigo con la duda de dónde obtener esos SPs que yo no tengo.

Saludos

heml dijo...

Hola.. ta bien la información, pero me nace una duda... com haria para generar los inserts de dos tablas (MAESTRO Y DETALLE) referenciadas por un id autonumerico. ?? Ejemplo:

tabla A(MAESTRO), B(DETALLE) en la tabla A tengo los siguientes registros:

id_A Fecha
--------------
1 20110712

Tabla B tengo:

id_B id_A Monto
----------------------
1 1 100
2 1 200
3 1 300

Como hago para crear los inserts de ambas estructuras sin perder sus referencias.

Saluds.. :)

heml dijo...

Hola.. ta bien la información, pero me nace una duda... com haria para generar los inserts de dos tablas (MAESTRO Y DETALLE) referenciadas por un id autonumerico. ?? Ejemplo:

tabla A(MAESTRO), B(DETALLE) en la tabla A tengo los siguientes registros:

id_A Fecha
--------------
1 20110712

Tabla B tengo:

id_B id_A Monto
----------------------
1 1 100
2 1 200
3 1 300

Como hago para crear los inserts de ambas estructuras sin perder sus referencias.

Saluds.. :)

Mis fotos en TrekEarth