Conversión de resultados seleccionados en secuencia de comandos de inserción - SQL Server [cerrado]


107

Yo tengo SQL Server 2008SQL Server Management Studio.

Necesito seleccionar datos Table1en database1. Luego tengo que editar algunos valores en los resultados y insert values into Table1en database2.

O déjame decirlo de otra manera.

¿Cómo puedo convertir los datos de una tabla en insert script.


¿Están las bases de datos en el mismo servidor? Si es así, puede insertar de uno en el otro. Insertar en database2.dbo.myTable seleccionar datos de database1.dbo.anOtherTable
u07ch

Sí, ambas bases de datos están en el mismo servidor. Pero necesito un guión. Le daré estos scripts a nuestro encargado de la base de datos.
Captain Comic

Ayudaría a aclarar la cuestión. ¿Funcionará algún enfoque o necesita un script de inserción que pueda entregar a su dba?
Greg

Respuestas:


31

El paquete de herramientas SSMS (que es GRATUITO como en la cerveza) tiene una variedad de excelentes características, incluida la generación de declaraciones INSERT a partir de tablas.

Actualización: para SQL Server Management Studio 2012 (y versiones posteriores), SSMS Toolpack ya no es gratuito, pero requiere una tarifa de licencia modesta.


+1 @marc_s Hice mucho trabajo generando tales scripts de inserción sin usar scripts del generador T-SQL y ahora me dices que hay una herramienta.
bernd_k

Tenga cuidado cuando las tablas almacenan datos monetarios . Esos tipos de datos pueden almacenar más lugares decimales de los que se muestran normalmente o en los scripts generados por SSMS Toolpack
bernd_k

13
Esto ya no es gratis. ssmstoolspack.com/Licensing
greg

@Greg: gracias por señalar eso. Nota: esa licencia solo se aplica a SQL Server Management Studio 2012 y versiones posteriores; para versiones anteriores, el paquete de herramientas sigue siendo gratuito.
marc_s

4
¿Alternativa al paquete de herramientas SSMS ?
Kiquenet

155

Aquí hay otro método, que puede ser más fácil que instalar complementos o herramientas externas en algunas situaciones:

  • Haz una .select [whatever you need]INTO temp.table_namefrom [... etc ...]
  • Haga clic derecho en la base de datos en el Explorador de objetos => Tareas => Generar scripts
  • Seleccione temp.table_nameen la pantalla "Elegir objetos", haga clic en Siguiente.
  • En la pantalla "Especificar cómo se deben guardar los scripts":
    • Haga clic en Avanzado, busque la propiedad "Tipos de datos para script", seleccione "Solo datos", cierre las propiedades avanzadas.
    • Seleccione "Guardar en una nueva ventana de consulta" (a menos que tenga miles de registros).
  • Haga clic en Siguiente, espere a que se complete el trabajo, observe que las INSERTdeclaraciones resultantes aparecen en una nueva ventana de consulta.
  • Utilice Buscar y reemplazar para cambiar todo [temp.table_name]a [your_table_name].
  • drop table [temp.table_name].

El uso de INTO temp.table1 genera el siguiente error: El nombre de esquema especificado "temp" no existe o no tiene permiso para usarlo. Estoy usando SQL 2012.
Mark

3
tempaquí se refiere a cualquier esquema al que tenga acceso. Puede crear uno ( create schema temp) y luego eliminarlo cuando haya terminado, o (mejor) simplemente usar cualquier esquema en el que esté trabajando actualmente.
KT.

1
Gracias por esto, ¡sabía que debía haber una manera! Por cierto, puede omitir la creación de la tabla temporal si solo necesita todos los datos de la tabla que desea escribir.
FAB

Tuve que usar esto para importar datos a una base de datos de Azure. Importarlo a una base de datos que no sea azul y luego extraerlo como inserciones SQL.
m12lrpv

2
Todavía me sorprende que SSMS no haya agregado esta capacidad 'ver salida como script de inserción' en los conjuntos de resultados ... pero el enfoque anterior funciona, aunque crea comandos de inserción individuales en lugar de hacer una inserción masiva adecuada (digamos, 1,000 elementos por inserción ) como debería. Esto puede tardar una eternidad en ejecutarse en conjuntos de resultados realmente grandes
Traderhut Games

60

En SSMS:

  • Haga clic derecho en la base de datos> Tareas> Generar scripts

  • próximo

  • Seleccione "Seleccionar objetos de base de datos específicos" y marque la tabla que desea programar, Siguiente

  • Haga clic Advanced >en la lista de opciones, desplácese hasta la parte inferior y busque "Tipos de datos para escribir" y cámbielo a "Solo datos"> Aceptar.

  • Seleccione "Guardar en una nueva ventana de consulta"> Siguiente> Siguiente> Finalizar

¡Las 180 filas ahora están escritas como 180 declaraciones de inserción!


12
Útil para pocas filas. No es útil : si una tabla tiene 20000 filas y solo quiero 20 inserciones para 20 filas.
Kiquenet

2
@Kiquenet: primero puede crear una Vista que seleccione las 20 filas deseadas, luego siga estos pasos para crear los scripts de inserción basados ​​en la Vista. Luego, puede hacer una búsqueda masiva y reemplazar para cambiar el nombre de la Vista de nuevo a cualquier nombre de Tabla en el que necesite insertar.
tiembre

@tember No funciona en View como usted dice, pero SÍ en Visual Studio: primero crea una vista con la selección requerida en sql studio, luego abre Visual Studio, se conecta al servidor SQL y genera un script en esa vista creada.
Sergii

Gracias por esa información. Aunque tirar toda la mesa es una exageración, resolvió mi problema.
Paulz

Salvavidas. He escrito guiones toda mi vida.
Jay

38

Método nativo :

por ejemplo si tienes mesa

Users(Id, name)

Puedes hacerlo:

select 'insert into Table values(Id=' + Id + ', name=' + name + ')' from Users

Puede hacerlo de esta manera, pero si tiene más de unas pocas tablas, tendrá que escribir un poco. Hay sps escritos y que se pueden encontrar en Google que hacen esto por usted o, si tiene VS2012, puede hacer que VS lo haga por usted. Vea mi respuesta a continuación.
Greg

1
Útil para tablas con pocos campos. Si una tabla tiene 50, 60, 100 columnas, no es útil. Mejor generación de código SQL
Kiquenet

23

1- Explicación de guiones

A) La sintaxis para insertar datos en la tabla es la siguiente

Insert into table(col1,col2,col3,col4,col5)    

             -- To achieve this part i    
             --have used below variable
                ------@CSV_COLUMN-------

values(Col1 data in quote, Col2..quote,..Col5..quote)

-- To achieve this part 
-- i.e column data in 
--quote i have used 
--below variable
----@QUOTED_DATA---

C) Para obtener los datos anteriores de la tabla existente, tenemos que escribir la consulta de selección de tal manera que la salida tenga la forma de los scripts anteriores

D) Luego, finalmente he concatenado la variable anterior para crear el script final que generará el script de inserción en la ejecución

MI)

@TEXT='SELECT ''INSERT INTO
 '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER_CONDITION

F) Y finalmente ejecutó la consulta anterior EXECUTE(TEXT)

G) la QUOTENAME()función se usa para envolver los datos de la columna dentro de la cita

H) ISNULLse usa porque si alguna fila tiene NULL datos para cualquier columna, la consulta falla y devuelve, NULLpor eso para evitar que haya usadoISNULL

I) Y creé el sp sp_generate_insertscripts para el mismo

1- Solo ingresa el nombre de la tabla para la que quieras insert script

2- Condición de filtro si quieres resultados específicos

----------Final Procedure To generate Script------

CREATE PROCEDURE sp_generate_insertscripts
(
    @TABLE_NAME VARCHAR(MAX),
    @FILTER_CONDITION VARCHAR(MAX)=''
)
AS
BEGIN

SET NOCOUNT ON

DECLARE @CSV_COLUMN VARCHAR(MAX),
        @QUOTED_DATA VARCHAR(MAX),
        @TEXT VARCHAR(MAX)

SELECT @CSV_COLUMN=STUFF
(
    (
     SELECT ',['+ NAME +']' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @QUOTED_DATA=STUFF
(
    (
     SELECT ' ISNULL(QUOTENAME('+NAME+','+QUOTENAME('''','''''')+'),'+'''NULL'''+')+'','''+'+' FROM sys.all_columns 
     WHERE OBJECT_ID=OBJECT_ID(@TABLE_NAME) AND 
     is_identity!=1 FOR XML PATH('')
    ),1,1,''
)

SELECT @TEXT='SELECT ''INSERT INTO '+@TABLE_NAME+'('+@CSV_COLUMN+')VALUES('''+'+'+SUBSTRING(@QUOTED_DATA,1,LEN(@QUOTED_DATA)-5)+'+'+''')'''+' Insert_Scripts FROM '+@TABLE_NAME + @FILTER_CONDITION

--SELECT @CSV_COLUMN AS CSV_COLUMN,@QUOTED_DATA AS QUOTED_DATA,@TEXT TEXT

EXECUTE (@TEXT)

SET NOCOUNT OFF

END

Hiciste un trabajo increíble ...
DineshDB

14

Es posible hacerlo a través de Visual Studio SQL Server Object Explorer.

Puede hacer clic en "Ver datos" en el menú contextual para la tabla necesaria, filtrar los resultados y guardar el resultado como secuencia de comandos.


1
Su publicación es la forma correcta y más fácil usando SQL Server Data Tools en Visual Studio, aquí y aquí hay una publicación que explica cómo generar una declaración de inserción para las primeras 1000 filas, espero que ayude.
shaijut

8

Usando Visual Studio, haga lo siguiente

Cree un proyecto de tipo SQL Server -> Proyecto de base de datos de SQL Server

abra el explorador del servidor SQL CTL- \, CTL-S

agregue un servidor SQL haciendo clic derecho en el icono del servidor SQL. Selcet AÑADIR NUEVO SERVIDOR

navega hasta la tabla que te interesa

clic derecho -> VER DATOS

Haga clic en la celda superior izquierda para resaltar todo (ctl-A no parece funcionar)

Clic derecho -> SCript

Esto es fabuloso. He probado todo lo mencionado anteriormente a lo largo de los años. Sé que hay una herramienta que hará esto y mucho más, no puedo pensar en su nombre. Pero es muy caro.

Buena suerte. Me acabo de dar cuenta de esto. No lo he probado extensamente con campos de texto, etc., pero parece que te lleva muy lejos por el camino.

Greg


1
Esto no convierte los resultados seleccionados, simplemente escribe la tabla.
Eric K

@QuantumDynamix: la pregunta original se aclara en la parte inferior con '¿Cómo puedo convertir los datos de una tabla en un script?' A continuación se muestra una muestra de mi enfoque. Es exactamente lo que preguntó el usuario. De hecho, es la única solución que veo que realmente produce un script de inserciones, como pregunta el usuario. ¿Por qué el voto negativo? ¿Qué significa "no convertir resultados seleccionados"? SET IDENTITY_INSERT [PMDB]. [BUAttr] ON INSERT INTO [PMDB]. [BUAttr] ([id], [BU], [Name], [Value]) VALUES (1, N'ALASKA ', N'GeoCenter Lat' , N'67.07213 ')
greg

esto junto con la creación de las tablas temporales, lo hice por mí
harishr

4

Cree una tabla separada usando la instrucción into Por ejemplo

Seleccione * en Test_123 de [dbo]. [Empleado] donde Nombre como '% Test%'

Vaya a la base de datos Haga clic derecho en la base de datos Haga clic en Generar script Seleccione su tabla Seleccione la opción avanzada y seleccione el atributo "Sólo datos" Seleccione el archivo "abrir en una nueva consulta"

SQL generará un script para usted


3

Puede elegir la opción 'Resultado a archivo' en SSMS y exportar su resultado seleccionado a un archivo y hacer sus cambios en el archivo de resultados y, finalmente, utilizando BCP - Copia masiva que puede insertar en la tabla 1 en la base de datos 2.

Creo que para la inserción masiva tienes que convertir el archivo .rpt en el archivo .csv

Espero que te ayude.


2

Tuve un problema similar, pero necesitaba poder crear una declaración INSERT a partir de una consulta (con filtros, etc.)

Entonces creé el siguiente procedimiento:

CREATE PROCEDURE dbo.ConvertQueryToInsert (@input NVARCHAR(max), @target NVARCHAR(max)) AS BEGIN

    DECLARE @fields NVARCHAR(max);
    DECLARE @select NVARCHAR(max);

    -- Get the defintion from sys.columns and assemble a string with the fields/transformations for the dynamic query
    SELECT
        @fields = COALESCE(@fields + ', ', '') + '[' + name +']', 
        @select = COALESCE(@select + ', ', '') + ''''''' + ISNULL(CAST([' + name + '] AS NVARCHAR(max)), ''NULL'')+'''''''
    FROM tempdb.sys.columns 
    WHERE [object_id] = OBJECT_ID(N'tempdb..'+@input);

    -- Run the a dynamic query with the fields from @select into a new temp table
    CREATE TABLE #ConvertQueryToInsertTemp (strings nvarchar(max))
    DECLARE @stmt NVARCHAR(max) = 'INSERT INTO #ConvertQueryToInsertTemp SELECT '''+ @select + ''' AS [strings] FROM '+@input
    exec sp_executesql @stmt

    -- Output the final insert statement 
    SELECT 'INSERT INTO ' + @target + ' (' + @fields + ') VALUES (' + REPLACE(strings, '''NULL''', 'NULL') +')' FROM #ConvertQueryToInsertTemp

    -- Clean up temp tables
    DROP TABLE #ConvertQueryToInsertTemp
    SET @stmt = 'DROP TABLE ' + @input
    exec sp_executesql @stmt
END

Luego puede usarlo escribiendo el resultado de su consulta en una tabla temporal y ejecutando el procedimiento:

-- Example table
CREATE TABLE Dummy (Id INT, Comment NVARCHAR(50), TimeStamp DATETIME)
INSERT INTO Dummy VALUES (1 , 'Foo', GetDate()), (2, 'Bar', GetDate()), (3, 'Foo Bar', GetDate())

-- Run query and procedure
SELECT * INTO #TempTableForConvert FROM Dummy WHERE Id < 3
EXEC dbo.ConvertQueryToInsert '#TempTableForConvert', 'dbo.Dummy'

Nota: Este procedimiento solo convierte los valores en una cadena que puede hacer que los datos se vean un poco diferentes. Con DATETIME, por ejemplo, se perderán los segundos.


2

Esta es una solución más versátil (que puede hacer un poco más de lo que pide la pregunta) y se puede usar en una ventana de consulta sin tener que crear un nuevo proceso almacenado, útil en bases de datos de producción, por ejemplo, donde no tiene acceso de escritura. .

Para utilizar el código, modifíquelo de acuerdo con los comentarios en línea que explican su uso. Luego, puede ejecutar esta consulta en una ventana de consulta e imprimirá las declaraciones INSERT que necesita.

SET NOCOUNT ON

-- Set the ID you wish to filter on here
DECLARE @id AS INT = 123

DECLARE @tables TABLE (Name NVARCHAR(128), IdField NVARCHAR(128), IdInsert BIT, Excluded NVARCHAR(128))

-- Add any tables you wish to generate INSERT statements for here. The fields are as thus:
 -- Name: Your table name
 -- IdField: The field on which to filter the dataset
 -- IdInsert: If the primary key field is to be included in the INSERT statement
 -- Excluded: Any fields you do not wish to include in the INSERT statement
INSERT INTO @tables (Name, IdField, IdInsert, Excluded) VALUES ('MyTable1', 'Id', 0, 'Created,Modified')
INSERT INTO @tables (Name, IdField, IdInsert, Excluded) VALUES ('MyTable2', 'Id', 1, 'Created,Modified')

DECLARE @numberTypes TABLE (sysId TINYINT)

-- This will ensure INT and BIT types are not surrounded with quotes in the
-- resultant INSERT statement, but you may need to add more (from sys.types)
INSERT @numberTypes(SysId) VALUES(56),(104)

DECLARE @rows INT = (SELECT COUNT(*) FROM @tables)
DECLARE @cnt INT = 1

DECLARE @results TABLE (Sql NVARCHAR(4000))

WHILE @cnt <= @rows
BEGIN
    DECLARE @tablename AS NVARCHAR(128)
    DECLARE @idField AS NVARCHAR(128)
    DECLARE @idInsert AS BIT
    DECLARE @excluded AS NVARCHAR(128)
    SELECT
        @tablename = Name,
        @idField = IdField,
        @idInsert = IdInsert,
        @excluded = Excluded
    FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowId FROM @tables) t WHERE t.RowId = @cnt

    DECLARE @excludedFields TABLE (FieldName NVARCHAR(128))
    DECLARE @xml AS XML = CAST(('<X>' + REPLACE(@excluded, ',', '</X><X>') + '</X>') AS XML)
    INSERT INTO @excludedFields SELECT N.value('.', 'NVARCHAR(128)') FROM @xml.nodes('X') AS T(N)

    DECLARE @setIdentity NVARCHAR(128) = 'SET IDENTITY_INSERT ' + @tablename

    DECLARE @execsql AS NVARCHAR(4000) = 'SELECT ''' + CASE WHEN @idInsert = 1 THEN @setIdentity + ' ON' + CHAR(13) ELSE '' END + 'INSERT INTO ' + @tablename + ' ('
    SELECT @execsql = @execsql +
    STUFF
    (
        (
            SELECT CASE WHEN NOT EXISTS(SELECT * FROM @excludedFields WHERE FieldName = name) THEN ', ' + name ELSE '' END
            FROM sys.columns
            WHERE object_id = OBJECT_ID('dbo.' + @tablename)
            FOR XML PATH('')
        ), 1, 2, ''
    ) +
    ')' + CHAR(13) + 'VALUES (' +
    STUFF
    (
        (
            SELECT
                CASE WHEN NOT EXISTS(SELECT * FROM @excludedFields WHERE FieldName = name) THEN
                    ''', '' + ISNULL(' +
                    CASE WHEN EXISTS(SELECT * FROM @numberTypes WHERE SysId = system_type_id) THEN '' ELSE ''''''''' + ' END +
                    'CAST(' + name + ' AS VARCHAR)' +
                    CASE WHEN EXISTS(SELECT * FROM @numberTypes WHERE SysId = system_type_id) THEN '' ELSE ' + ''''''''' END +
                    ', ''NULL'') + '
                ELSE ''
                END
            FROM sys.columns
            WHERE object_id = OBJECT_ID('dbo.' + @tablename)
            FOR XML PATH('')
        ), 1, 3, ''
    ) +
    ''')' + CASE WHEN @idInsert = 1 THEN CHAR(13) + @setIdentity + ' OFF' ELSE '' END +
    ''' FROM ' + @tablename + ' WHERE ' + @idField + ' = ' + CAST(@id AS VARCHAR)

    INSERT @results EXEC (@execsql)
    DELETE @excludedFields
    SET @cnt = @cnt + 1
END

DECLARE cur CURSOR FOR SELECT Sql FROM @results
OPEN cur

DECLARE @sql NVARCHAR(4000)
FETCH NEXT FROM cur INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @sql
    FETCH NEXT FROM cur INTO @sql
END

CLOSE cur
DEALLOCATE cur



1

Creé lo siguiente procedure:

if object_id('tool.create_insert', 'P') is null
begin
  exec('create procedure tool.create_insert as');
end;
go

alter procedure tool.create_insert(@schema    varchar(200) = 'dbo',
                                   @table     varchar(200),
                                   @where     varchar(max) = null,
                                   @top       int = null,
                                   @insert    varchar(max) output)
as
begin
  declare @insert_fields varchar(max),
          @select        varchar(max),
          @error         varchar(500),
          @query         varchar(max);

  declare @values table(description varchar(max));

  set nocount on;

  -- Get columns
  select @insert_fields = isnull(@insert_fields + ', ', '') + c.name,
         @select = case type_name(c.system_type_id)
                      when 'varchar' then isnull(@select + ' + '', '' + ', '') + ' isnull('''''''' + cast(' + c.name + ' as varchar) + '''''''', ''null'')'
                      when 'datetime' then isnull(@select + ' + '', '' + ', '') + ' isnull('''''''' + convert(varchar, ' + c.name + ', 121) + '''''''', ''null'')'
                      else isnull(@select + ' + '', '' + ', '') + 'isnull(cast(' + c.name + ' as varchar), ''null'')'
                    end
    from sys.columns c with(nolock)
         inner join sys.tables t with(nolock) on t.object_id = c.object_id
         inner join sys.schemas s with(nolock) on s.schema_id = t.schema_id
   where s.name = @schema
     and t.name = @table;

  -- If there's no columns...
  if @insert_fields is null or @select is null
  begin
    set @error = 'There''s no ' + @schema + '.' + @table + ' inside the target database.';
    raiserror(@error, 16, 1);
    return;
  end;

  set @insert_fields = 'insert into ' + @schema + '.' + @table + '(' + @insert_fields + ')';

  if isnull(@where, '') <> '' and charindex('where', ltrim(rtrim(@where))) < 1
  begin
    set @where = 'where ' + @where;
  end
  else
  begin
    set @where = '';
  end;

  set @query = 'select ' + isnull('top(' + cast(@top as varchar) + ')', '') + @select + ' from ' + @schema + '.' + @table + ' with (nolock) ' + @where;

  insert into @values(description)
  exec(@query);

  set @insert = isnull(@insert + char(10), '') + '--' + upper(@schema + '.' + @table);

  select @insert = @insert + char(10) + @insert_fields + char(10) + 'values(' + v.description + ');' + char(10) + 'go' + char(10)
    from @values v
   where isnull(v.description, '') <> '';
end;
go

Entonces puedes usarlo de esa manera:

declare @insert varchar(max),
        @part   varchar(max),
        @start  int,
        @end    int;

set @start = 1;

exec tool.create_insert @schema = 'dbo',
                        @table = 'customer',
                        @where  = 'id = 1',
                        @insert = @insert output;

-- Print one line to avoid the maximum 8000 characters problem
while len(@insert) > 0
begin
  set @end = charindex(char(10), @insert);

  if @end = 0
  begin
    set @end = len(@insert) + 1;
  end;

  print substring(@insert, @start, @end - 1);
  set @insert = substring(@insert, @end + 1, len(@insert) - @end + 1);
end;

La salida sería algo así:

--DBO.CUSTOMER
insert into dbo.customer(id, name, type)
values(1, 'CUSTOMER NAME', 'F');
go

Si solo desea obtener un rango de filas, use el @topparámetro como se muestra a continuación:

declare @insert varchar(max),
        @part   varchar(max),
        @start  int,
        @end    int;

set @start = 1;

exec tool.create_insert @schema = 'dbo',
                        @table = 'customer',
                        @top    = 100,
                        @insert = @insert output;

-- Print one line to avoid the maximum 8000 characters problem
while len(@insert) > 0
begin
  set @end = charindex(char(10), @insert);

  if @end = 0
  begin
    set @end = len(@insert) + 1;
  end;

  print substring(@insert, @start, @end - 1);
  set @insert = substring(@insert, @end + 1, len(@insert) - @end + 1);
end;

Ayuda, pero truncó este campo "6C2A94737A456C405FDCF793DFA6E661: BqRc / DpUIe27" a solo "6C2A94737A456C405FDCF793DFA6E6"
Adam Mendoza

0

Si está utilizando Oracle (o configura la aplicación en SQL Server), Oracle SQL Developer lo hace por usted. elija 'descargar' para una tabla y siga las opciones (desmarque DDL si no desea que toda la tabla cree cosas).


1
Esto está claramente marcado como una pregunta de SQL Server ...
BentOnCoding

También es posible utilizar Oracle SQL Developer con SQL Server. Edité mi respuesta.
Liam

0

Encontré este complemento SMSMS Boost , que es gratuito y hace exactamente esto, entre otras cosas. Puede hacer clic con el botón derecho en los resultados y seleccionar Datos de script como.


Veo los datos de la cuadrícula de script pero no genero SQL Insert a partir de los resultados
Kiquenet

0

Puede utilizar este Q2C.SSMSPlugin , que es gratuito y de código abierto. Puede hacer clic derecho y seleccionar "Ejecutar consulta para comando ... -> Consulta para insertar ...". Disfrutar)


¿Válido para SSMS 2012?
Kiquenet

-1

Puede utilizar una INSERT INTO SELECTdeclaración para insertar los resultados de una consulta de selección en una tabla. http://www.w3schools.com/sql/sql_insert_into_select.asp

Ejemplo:

INSERT INTO Customers (CustomerName, Country) SELECT SupplierName, Country FROM Suppliers WHERE Country='Germany';

1
Esto no tiene nada que ver con un resultado de una declaración SELECT que se convierte en declaraciones INSERT. Esto es simplemente una declaración INSERT.
Niels Lucas

¿No es funcionalmente equivalente?
Protector uno
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.