Respuestas:
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
Seleccione "Tipos de datos para secuencia de comandos", que pueden ser "Solo datos", "Esquema y datos" o "Solo esquema", el valor predeterminado).
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.)
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.
Si lo usa SQLServer 2008R2, debe establecer Tipos de datos en el campo de secuencia de comandos.
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 = true
como 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.
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
Solo actualizo capturas de pantalla para ayudar a otros, ya que estoy usando una versión v18 más reciente, alrededor de 2019.
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.
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.
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!
Todo lo anterior es bueno, pero si necesitas
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.
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'
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.