Conversione dei risultati di selezione in uno script di inserimento - SQL Server [chiuso]


107

Ho SQL Server 2008, SQL Server Management Studio.

Devo selezionare i dati da Table1in database1. Quindi devo modificare alcuni valori nei risultati e insert values into Table1in database2.

O lasciatemi dire in altro modo.

Come posso convertire i dati in una tabella in insert script.


I database sono sullo stesso server? Se è così puoi inserire da uno all'altro. Inserisci in database2.dbo.myTable seleziona i dati da database1.dbo.anOtherTable
u07ch

Sì, entrambi i database si trovano sullo stesso server. Ma ho bisogno della sceneggiatura. Darò questi script al nostro addetto al database.
Captain Comic

Aiuterebbe a chiarire la domanda. Qualche approccio funzionerà o hai bisogno di uno script di inserimento che puoi trasferire al tuo dba?
greg

Risposte:


31

SSMS Toolpack (che è GRATUITO come nella birra) ha una varietà di ottime caratteristiche, inclusa la generazione di istruzioni INSERT dalle tabelle.

Aggiornamento: per SQL Server Management Studio 2012 (e successivi), SSMS Toolpack non è più gratuito, ma richiede una modesta tariffa di licenza.


+1 @marc_s Ho fatto molto lavoro generando tali script di inserimento deselezionando gli script del generatore T-SQL e ora mi dici che esiste uno strumento.
bernd_k

Fai attenzione quando le tabelle memorizzano i dati di denaro . Questo tipo di dati può memorizzare più cifre decimali di quelle normalmente visualizzate o negli script generati da SSMS Toolpack
bernd_k

13
Questo non è più gratuito. ssmstoolspack.com/Licensing
greg

@ Greg: grazie per averlo fatto notare. Nota: la licenza si applica solo a SQL Server Management Studio 2012 e versioni successive: per le versioni precedenti, il toolpack è ancora gratuito.
marc_s

4
Alternativa al toolpack SSMS ?
Kiquenet

155

Ecco un altro metodo, che in alcune situazioni potrebbe essere più semplice dell'installazione di plug-in o strumenti esterni:

  • Fai un .select [whatever you need]INTO temp.table_namefrom [... etc ...]
  • Fare clic con il pulsante destro del mouse sul database in Esplora oggetti => Attività => Genera script
  • Selezionare temp.table_namenella schermata "Scegli oggetti", fare clic su Avanti.
  • Nella schermata "Specifica come salvare gli script":
    • Fare clic su Avanzate, trovare la proprietà "Tipi di dati per lo script", selezionare "Solo dati", chiudere le proprietà avanzate.
    • Seleziona "Salva in una nuova finestra di query" (a meno che tu non abbia migliaia di record).
  • Fare clic su Avanti, attendere il completamento del lavoro, osservare le INSERTistruzioni risultanti apparire in una nuova finestra di query.
  • Usa Trova e sostituisci per cambiare tutto [temp.table_name]in [your_table_name].
  • drop table [temp.table_name].

L'utilizzo di INTO temp.table1 genera il seguente errore: Il nome di schema specificato "temp" non esiste o non si dispone dell'autorizzazione per utilizzarlo. Sto usando SQL 2012.
Contrassegna il

3
tempqui si riferisce a qualsiasi schema a cui hai accesso. Puoi crearne uno ( create schema temp) e poi rimuoverlo quando hai finito, o (meglio) usare semplicemente lo schema su cui stai lavorando.
KT.

1
Grazie per questo, sapevo che doveva esserci un modo! A proposito, puoi saltare la creazione della tabella temporanea se hai solo bisogno di tutti i dati dalla tabella che vuoi scrivere.
FAB

Ho dovuto usarlo per importare i dati in un database di Azure. Importalo in un database non Azure, quindi estrailo come inserimenti SQL.
m12lrpv

2
Mi stupisce ancora che SSMS non abbia aggiunto questa capacità di 'visualizzare l'output come script di inserimento' sui set di risultati .. ma l'approccio di cui sopra funziona, sebbene crei singoli comandi di inserimento invece di eseguire un corretto inserimento in blocco (diciamo 1.000 elementi per inserimento ) come dovrebbe. Questo può richiedere un'eternità per funzionare su set di risultati davvero grandi
Traderhut Games

60

In SSMS:

  • Fare clic con il pulsante destro del mouse sul database> Attività> Genera script

  • Il prossimo

  • Seleziona "Seleziona oggetti di database specifici" e seleziona la tabella per cui desideri creare uno script, Avanti

  • Fai clic Advanced >nell'elenco di opzioni, scorri verso il basso fino in fondo e cerca i "Tipi di dati da inserire nello script" e modificali in "Solo dati"> OK

  • Seleziona "Salva in una nuova finestra della query"> Avanti> Avanti> Fine

Tutte le 180 righe ora scritte come 180 istruzioni di inserimento!


12
Utile per poche righe. Non utile : se una tabella ha 20000 righe e voglio solo 20 inserti per 20 righe.
Kiquenet

2
@Kiquenet: è possibile creare prima una vista che selezioni le 20 righe desiderate, quindi seguire questi passaggi per creare gli script di inserimento in base alla vista. È quindi possibile eseguire una ricerca e sostituzione di massa per modificare il nome della vista in qualsiasi nome di tabella in cui è necessario inserire.
tembre

@ September Non funziona su View come dici tu, ma FUNZIONA in Visual Studio: prima crei una vista con la selezione richiesta in sql studio, quindi apri Visual Studio, connettiti a sql server e genera script su quella vista creata.
Sergii

Grazie per queste informazioni. Sebbene il dumping dell'intera tabella sia eccessivo, ha risolto il mio problema.
paulz

Salvavita. Ho scritto sceneggiature per tutta la vita.
Jay,

38

Metodo nativo :

per esempio se hai table

Users(Id, name)

Puoi farlo:

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

Puoi farlo in questo modo, ma se hai più di poche tabelle diventa un po 'di digitazione. Ci sono sps scritti e reperibili su Google che lo fanno per te, oppure, se hai VS2012, puoi farlo fare a VS per te. Vedi la mia risposta di seguito.
greg

1
Utile per tabelle con pochi campi. Se una tabella ha 50, 60, 100 colonne non è utile. Migliore generazione di codice SQL
Kiquenet

23

1- Spiegazione degli script

A) La sintassi per l'inserimento dei dati nella tabella è la seguente

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) Per ottenere i dati sopra dalla tabella esistente dobbiamo scrivere la query di selezione in modo tale che l'output sia nella forma degli script sopra

D) Poi finalmente ho concatenato la variabile sopra per creare lo script finale che genererà lo script di inserimento durante l'esecuzione

E)

@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) E infine eseguito la query sopra EXECUTE(TEXT)

La QUOTENAME()funzione G) viene utilizzata per avvolgere i dati della colonna all'interno delle virgolette

H) ISNULLviene utilizzato perché se una riga ha NULL dati per qualsiasi colonna la query fallisce e restituisce NULLquesto è il motivo per evitare che ho usatoISNULL

I) E ho creato la sp sp_generate_insertscripts per lo stesso

1- Inserisci semplicemente il nome della tabella che desideri insert script

2- Filtra le condizioni se desideri risultati specifici

----------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

Hai fatto un
ottimo

14

È possibile farlo tramite Visual Studio SQL Server Object Explorer.

È possibile fare clic su "Visualizza dati" dal menu di scelta rapida per la tabella necessaria, filtrare i risultati e salvare il risultato come script.


1
Il tuo post è il modo corretto e più semplice utilizzando SQL Server Data Tools in Visual Studio, qui e qui c'è un post che spiega come generare l'istruzione insert per le prime 1000 righe che la speranza aiuta.
shaijut

8

Utilizzando Visual Studio, effettuate le seguenti operazioni

Creare un progetto di tipo SQL Server -> Progetto database SQL Server

apri il server explorer sql CTL- \, CTL-S

aggiungere un SQL Server facendo clic con il pulsante destro del mouse sull'icona SQL SERVER. Selcet AGGIUNGI NUOVO SERVER

vai alla tabella che ti interessa

fare clic con il tasto destro -> VISUALIZZA DATI

Fare clic sulla cella in alto a sinistra per evidenziare tutto (ctl-A non sembra funzionare)

Fare clic con il tasto destro -> SCript

Questo è favoloso. Ho provato tutto ciò che ho elencato sopra nel corso degli anni. So che c'è uno strumento là fuori che farà questo e molto altro, non riesco a pensare al nome. Ma è molto costoso.

In bocca al lupo. L'ho appena scoperto. Non l'ho testato ampiamente con campi di testo, ecc., Ma sembra che ti faccia fare molta strada lungo la strada.

Greg


1
Questo non converte i risultati selezionati, si limita a creare uno script nella tabella.
Eric K

@QuantumDynamix - la domanda originale è chiarita in fondo da "Come posso convertire i dati in una tabella in uno script". Di seguito è riportato un esempio del mio approccio. È esattamente ciò che l'utente ha chiesto. In effetti, è l'unica soluzione che vedo che produce effettivamente uno script di inserti, come chiede l'utente. Perché il voto negativo? Cosa significa "non converte i risultati selezionati"? 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

questo insieme alla creazione delle tabelle temporanee, lo ha fatto per me
harishr

4

Crea una tabella separata usando l'istruzione into For example

Seleziona * in Test_123 da [dbo]. [Employee] dove Name like '% Test%'

Vai al database Fai clic con il pulsante destro del mouse sul database Fai clic su Genera script Seleziona la tabella Seleziona l'opzione Advanace e seleziona l'attributo "Solo dati" Seleziona il file "Apri in una nuova query"

Sql genererà lo script per te


3

Puoi scegliere l'opzione 'Risultato su file' in SSMS ed esportare il risultato selezionato su file e apportare le modifiche nel file dei risultati e infine utilizzare BCP - Copia in blocco che puoi inserire nella tabella 1 nel database 2.

Penso che per l'inserimento in blocco devi convertire il file .rpt in file .csv

Spero che possa aiutare.


2

Ho avuto un problema simile, ma dovevo essere in grado di creare un'istruzione INSERT da una query (con filtri ecc.)

Quindi ho creato la seguente procedura:

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

Puoi quindi usarlo scrivendo l'output della tua query in una tabella temporanea ed eseguendo la procedura:

-- 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: questa procedura esegue il cast dei valori solo su una stringa che può causare un aspetto leggermente diverso dei dati. Con DATETIME, ad esempio, i secondi andranno persi.


2

Questa è una soluzione più versatile (che può fare un po 'di più di quanto la domanda chiede) e può essere utilizzata in una finestra di query senza dover creare un nuovo processo memorizzato - utile nei database di produzione, ad esempio dove non si ha accesso in scrittura .

Per utilizzare il codice, modificare in base ai commenti in linea che spiegano il suo utilizzo. Puoi quindi eseguire questa query in una finestra di query e stamperà le istruzioni INSERT necessarie.

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

Ho creato quanto segue 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

Quindi puoi usarlo in questo modo:

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;

L'output sarebbe qualcosa del genere:

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

Se vuoi solo ottenere un intervallo di righe, usa il @topparametro come sotto:

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;

Aiuta, ma ha troncato questo campo "6C2A94737A456C405FDCF793DFA6E661: BqRc / DpUIe27" a solo "6C2A94737A456C405FDCF793DFA6E6"
Adam Mendoza

0

Se stai usando Oracle (o configuri l'applicazione su SQL Server), Oracle SQL Developer lo fa per te. scegli 'unload' per una tabella e segui le opzioni (deseleziona DDL se non vuoi che tutta la tabella crei cose).


1
Questo è chiaramente contrassegnato come una domanda di SQL Server ...
BentOnCoding

È anche possibile utilizzare Oracle sql developer con sql server. Ho modificato la mia risposta.
Liam

0

Ho trovato questo addon SMSMS Boost , che è gratuito e fa esattamente questo tra le altre cose. È possibile fare clic con il pulsante destro del mouse sui risultati e selezionare Script data as.


Visualizzo i dati della griglia dello script ma non generi l'
inserimento

0

Puoi usare questo Q2C.SSMSPlugin , che è gratuito e open source. È possibile fare clic con il tasto destro e selezionare "Esegui query su comando ... -> Query da inserire ...". Godere)


Valido per SSMS 2012?
Kiquenet

-1

È possibile utilizzare INSERT INTO SELECTun'istruzione per inserire i risultati di una query di selezione in una tabella. http://www.w3schools.com/sql/sql_insert_into_select.asp

Esempio:

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

1
Questo non ha nulla a che fare con un risultato di un'istruzione SELECT che converte in istruzioni INSERT. Questa è solo una semplice istruzione INSERT.
Niels Lucas

Non è funzionalmente equivalente?
Protettore uno il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.