Exportar datos en SQL Server como INSERTAR EN


413

Estoy usando SQL Server 2008 Management Studio y tengo una tabla que quiero migrar a un servidor db diferente.

¿Hay alguna opción para exportar los datos como una inserción en el script SQL?

Respuestas:


682

En SSMS en el Explorador de objetos, haga clic derecho en la base de datos, haga clic derecho y seleccione "Tareas" y luego "Generar secuencias de comandos".

Esto le permitirá generar scripts para una o todas las tablas, y una de las opciones es "Datos de script". Si configura eso como VERDADERO, el asistente generará un script con la instrucción INSERT INTO () para sus datos.

Si usa 2008 R2 o 2012 se llama algo diferente, vea la captura de pantalla debajo de esta

texto alternativo

2008 R2 o posterior, por ejemplo, 2012

Seleccione "Tipos de datos para secuencia de comandos", que pueden ser "Solo datos", "Esquema y datos" o "Solo esquema", el valor predeterminado).

ingrese la descripción de la imagen aquí

Y luego hay un paquete " SSMS Addin " en Codeplex (incluida la fuente) que promete prácticamente la misma funcionalidad y algunos más (como búsqueda rápida, etc.)

texto alternativo


Acabo de instalar el complemento de Codeplex. Agradable. Gracias por la info.
Rob Garrison el

1
SMSS Add In me funcionó en 2008. Data Scripter Add In no lo hizo.
Phil Hale

55
En 2008 R2, la opción "Tipos de datos para script" se puede encontrar en la pantalla "Establecer opciones de script". Presione el botón "Avanzado" allí.
raymi

3
¿Estos complementos funcionan en 2008 R2? SSMS Addin está lanzando una excepción en la carga.
jocull

2
Echa un vistazo a la respuesta de @ruffin a continuación para obtener más capturas de pantalla
Keith Sirmons

117

En aras de la tontería excesivamente explícita, después de seguir las instrucciones de marc_s hasta aquí ...

En SSMS en el Explorador de objetos, haga clic derecho en la base de datos, haga clic derecho y seleccione "Tareas" y luego "Generar secuencias de comandos".

... Luego veo una pantalla de asistente con " Introducción, Elegir objetos, Establecer opciones de secuencia de comandos, Resumen y Guardar o publicar secuencias de comandos " con los botones prev, siguiente, finalizar y cancelar en la parte inferior.

En el paso Establecer opciones de secuencias de comandos , debe hacer clic en "Avanzado" para obtener la página con las opciones. Luego, como ha mencionado Ghlouw , ahora selecciona "Tipos de datos para guiar" y obtiene ganancias.

¡Botón avanzado DESTACADO EN ROJO! 1 !!


13
Gracias, este botón no tiene una ubicación muy intuitiva. Supuse que pertenece a "Guardar en archivo".
Karel Kral

48

Si lo usa SQLServer 2008R2, debe establecer Tipos de datos en el campo de secuencia de comandos.

ingrese la descripción de la imagen aquí


2
También se aplica a 2012.
OldCurmudgeon

1
También se aplica a 2014.
NucS

2
Si está confundido como yo, la opción "Tipos de datos para secuencia de comandos" solo está visible en las opciones "Avanzadas" del asistente "Generar secuencias de comandos ...", ¡no la encuentra en el cuadro de diálogo de opciones principales!
Etherman

36

Si está ejecutando SQL Server 2008 R2, las opciones integradas para hacer esto en SSMS como marc_s descritas anteriormente cambiaron un poco. En lugar de seleccionar Script data = truecomo se muestra en su diagrama, ahora hay una nueva opción llamada "Types of data to script"justo encima del grupo "Opciones de tabla / vista". Aquí puede seleccionar solo script de datos, esquema y datos o solo esquema. Funciona de maravilla.



6

Para aquellos que buscan una versión de línea de comandos, Microsoft lanzómssql-scripter para hacer esto:

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object

Parece que mssql-scripter es un proyecto muerto ahora.
Alex Suzuki

Es cierto que no hubo desarrollo en el último año, pero funciona bien para mí.
Nickolay

3

Solo actualizo capturas de pantalla para ayudar a otros, ya que estoy usando una versión v18 más reciente, alrededor de 2019.

Haga clic derecho DB: Tareas> Generar secuencias de comandos

Aquí puede seleccionar ciertas tablas o ir con el valor predeterminado de todas.

Aquí puede seleccionar ciertas tablas o ir con el valor predeterminado de todas. Para mis propias necesidades, estoy indicando solo una tabla.

A continuación, están las "Opciones de secuencias de comandos" donde puede elegir el archivo de salida, etc. Como en las respuestas múltiples anteriores (de nuevo, solo estoy desempolvando las respuestas antiguas para las más nuevas, v18.4 SQL Server Management Studio) lo que realmente queremos está debajo del botón "Avanzado". Para mis propios fines, solo necesito los datos.

Opciones de salida generales, incluida la salida al archivo. ¡Opciones avanzadas que incluyen datos!

Finalmente, hay un resumen de revisión antes de la ejecución. Después de ejecutar un informe del estado de las operaciones se muestra. Resumen de la reseña.


2

También puede consultar el "Complemento Scripter de datos" para SQL Server Management Studio 2008 desde:

http://www.mssql-vehicle-data.com/SSMS


Su lista de características:

  • Fue desarrollado en SSMS 2008 y no es compatible con la versión 2005 en este momento (¡pronto!)

  • Exporte datos rápidamente a T-SQL para la sintaxis de MSSQL y MySQL

  • ¡CSV, TXT, XML también son compatibles! Aproveche todo el potencial, la potencia y la velocidad que SQL tiene para ofrecer.

  • No espere a que Access o Excel hagan el trabajo de secuencias de comandos por usted, lo que podría llevar varios minutos, deje que SQL Server lo haga por usted y elimine todas las conjeturas al exportar sus datos.

  • Personalice su salida de datos para copias de seguridad rápidas, manipulación de DDL y más ...

  • Cambie los nombres de las tablas y los esquemas de la base de datos a sus necesidades, de manera rápida y eficiente.

  • Exporte nombres de columna o simplemente genere datos sin los nombres.

  • Puede elegir columnas individuales para la secuencia de comandos.

  • Puede elegir subconjuntos de datos (cláusula WHERE).

  • Puede elegir el orden de los datos (cláusula ORDER BY).

  • Gran utilidad de respaldo para esas operaciones de depuración de bases de datos sucias que requieren manipulación de datos. No pierdas datos mientras experimentas. ¡Manipule datos sobre la marcha!


2

Todo lo anterior es bueno, pero si necesitas

  1. Exportar datos de múltiples vistas y tablas con combinaciones
  2. Crear instrucciones de inserción para diferentes RDBMS
  3. Migre datos de cualquier RDBMS a cualquier RDBMS

entonces el siguiente truco es la única manera.

Primero, aprenda a crear archivos de spool o exportar conjuntos de resultados desde el cliente de línea de comandos db de origen. Segundo, aprenda a ejecutar sentencias sql en el db de destino.

Finalmente, cree las instrucciones de inserción (y cualquier otra instrucción) para la base de datos de destino ejecutando un script sql en la base de datos de origen. p.ej

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

El ejemplo anterior se creó para la base de datos de Oracle, donde se necesita el uso de dual para las selecciones sin tabla.

El conjunto de resultados contendrá el script para la base de datos de destino.


1

Aquí hay un ejemplo de cómo crear un script de migración de datos usando un cursor para iterar la tabla fuente.

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'

0

Después de buscar mucho, fue mi mejor oportunidad:

Si tiene muchos datos y necesita un script compacto y elegante, pruébelo: SSMS Tools Pack

Genera una unión de todas las instrucciones de selección para insertar elementos en las tablas de destino y manejar las transacciones bastante bien.

Captura de pantalla

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.