A veces queremos exportar los datos de algunas tablas hacia archivos planos… y no siempre tenemos a la mano alguna herramienta para realizar esta tarea.
Y desde el SQL Management Studio no tenemos la opción (al menos no la he visto en SQL SERVER 2005) de exportar los datos como un script. Me refiero a hacerlo de manera simple.
Si haces click derecho sobre una de tus tablas verás que hay distintas opciones para generar scripts para lo que quieras, menos lo que realmente queremos: exportar los datos como un script.
Pero eso no debería ser problema para nosotros, vamos a ver cómo lo podemos hacer…
1.- Estando en el Management Studio y dentro de una base de datos, hacemos click en New Query (Nueva consulta) y suponiendo que tenemos una tabla que se llama emotiaudio_distrito
la cual tiene tres campos llamados distritoid, title y costoreparto… de tipos int, varchar y decimal respectivamente… tipeamos lo sgte:
PRINT 'SET IDENTITY_INSERT emotiaudio_distrito ON' --Use esta línea sólo si la tabla incluye una columna identity
SET NOCOUNT ON
SELECT 'INSERT INTO emotiaudio_distrito(distritoid,
title, costoreparto)
VALUES(' +
cast(distritoid as varchar) + ',''' +
title + ''',' +
cast(costoreparto as varchar) +
') '
FROM emotiaudio_distrito
SET NOCOUNT OFF
PRINT 'SET IDENTITY_INSERT emotiaudio_distrito OFF' --Use esta línea sólo si la tabla incluye una columna identity
Puede darse el caso en que uno de los datos devuelva NULL, en ese caso el resultado de toda esa fila será simplemente NULL… porque:
NULL + no null = NULL… lo cual no queremos. Por ejemplo, cuando una tabla incluye una columna parentID, es posible que no todos tengan parentID … no es cierto? por eso es mejor agregarle una pequeña modificación:
PRINT 'SET IDENTITY_INSERT fpg_ubigeo ON' --Use esta línea sólo si la tabla incluye una columna identity
SET NOCOUNT ON
SELECT 'INSERT INTO fpg_ubigeo(ubigeoid, parentid, ubigeotypeid, titulo)
VALUES(' +
cast(locationid as varchar) + ',' +
CASE WHEN cast(ISNULL(parentid, 0) as varchar) = '0' THEN 'NULL' ELSE cast(parentid as varchar) END + ',' +
cast(locationtypeid as varchar) + ',''' +
title +
''') '
FROM risk_location
SET NOCOUNT OFF
PRINT 'SET IDENTITY_INSERT fpg_ubigeo OFF' --Use esta línea sólo si la tabla incluye una columna identity
Y luego presionamos F5 para que se ejecute la consulta… eeeeeeespera, debiste antes de presionar F5 ir al menú Consultas… > Resultados a… > Resultados a Texto… de esa manera los datos se muestran en un formato plano, para poder ser copiados y guardarlos en un block de notas.
Pero… y qué estoy haciendo? simplemente estoy armando un string de los datos… osea, concateno “INSERT INTO TU_TABLA…” con los datos.
Recuerda que si incluyes campo de tipo integer o decimal debes castearlos a varchar y también nota que no lo concateno con tres comillas simples como lo hago cuando es un string, sólo uso una comilla simple.
Para terminar, diré que este artificio nos sirve hasta SQL SERVER 2005, porque ya el SQL SERVER 2008 brinda la opción de generar el script INSERT de los datos.
;)
1 comentario:
Me sirvió mucho .. Gracias
Publicar un comentario