Esportazione di dati in SQL Server come INSERT INTO


413

Sto usando SQL Server 2008 Management Studio e ho una tabella che voglio migrare su un diverso server db.

C'è qualche opzione per esportare i dati come un inserimento nello script SQL ??

Risposte:


682

In SSMS in Esplora oggetti, fai clic con il pulsante destro del mouse sul database, fai clic con il pulsante destro del mouse e seleziona "Attività", quindi "Genera script".

Ciò ti consentirà di generare script per una singola o per tutte le tabelle e una delle opzioni è "Dati script". Se lo imposti su TRUE, la procedura guidata genererà uno script con l'istruzione INSERT INTO () per i tuoi dati.

Se si utilizza 2008 R2 o 2012, si chiama qualcos'altro, vedere screenshot di seguito

testo alternativo

2008 R2 o successivo, ad es. 2012

Seleziona "Tipi di dati da script" che possono essere "Solo dati", "Schema e dati" o "Solo schema" - impostazione predefinita).

inserisci qui la descrizione dell'immagine

E poi c'è un pacchetto " SSMS Addin " su Codeplex (incluso il sorgente) che promette praticamente la stessa funzionalità e pochi altri (come la ricerca rapida ecc.)

testo alternativo


Ho appena installato il componente aggiuntivo da Codeplex. Bello. Grazie per le informazioni.
Rob Garrison,

1
Il componente aggiuntivo SMSS ha funzionato per me nel 2008. Il componente aggiuntivo Data Scripter non ha funzionato.
Phil Hale,

5
Nel 2008 R2 l'opzione "Tipi di dati da script" è disponibile nella schermata "Imposta opzioni di scripting". Premi il pulsante "Avanzate" lì.
Raymi,

3
Questi componenti aggiuntivi funzionano nel 2008 R2? Il componente aggiuntivo SSMS genera un'eccezione al caricamento.
Giovedì

2
Dai un'occhiata alla risposta @ruffin di seguito per ulteriori screenshot
Keith Sirmons,

117

Per motivi di intelligenza eccessiva , dopo aver seguito le istruzioni di marc_s qui ...

In SSMS in Esplora oggetti, fare clic con il tasto destro del mouse sul database e selezionare "Attività", quindi "Genera script".

... Poi vedo una schermata della procedura guidata con " Introduzione, Scegli oggetti, Imposta opzioni di scripting, Riepilogo e Salva o Pubblica script " con i pulsanti precedente, successivo, di fine e di annullamento in basso.

Nel passaggio Imposta opzioni di scripting , devi fare clic su "Avanzate" per ottenere la pagina con le opzioni. Quindi, come ha menzionato Ghlouw , ora selezioni "Tipi di dati da scriptare " e guadagni.

pulsante avanzato IN EVIDENZA IN ROSSO! 1 !!


13
Grazie, questo pulsante non ha un posizionamento molto intuitivo. Suppongo che appartiene a "Salva su file".
Karel Kral,

48

Se lo si utilizza SQLServer 2008R2, è necessario impostare Tipi di dati nel campo script.

inserisci qui la descrizione dell'immagine


2
Vale anche per il 2012.
OldCurmudgeon,

1
Vale anche per il 2014.
NucS,

2
Se sei confuso come me, l'opzione "Tipi di dati da script" è visibile solo nelle opzioni "Avanzate" della procedura guidata "Genera script ...": non la trovi nella finestra di dialogo delle opzioni principali!
Etherman,

36

Se si esegue SQL Server 2008 R2, le opzioni integrate per eseguire questa operazione in SSMS come marc_s sopra descritto sono cambiate un po '. Invece di selezionare Script data = truecome mostrato nel suo diagramma, ora c'è una nuova opzione chiamata "Types of data to script"appena sopra il raggruppamento "Opzioni tabella / vista". Qui è possibile selezionare solo lo script di dati, schema e dati o solo schema. Funziona come un fascino.



6

Per coloro che cercano una versione da riga di comando, Microsoft ha rilasciatomssql-scripter per fare questo:

$ 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

Sembra che ora mssql-scripter sia un progetto morto.
Alex Suzuki,

È vero, nessuno sviluppo è avvenuto nell'ultimo anno, ma funziona bene per me.
Nickolay,

3

Sto solo aggiornando gli screenshot per aiutare gli altri mentre sto usando un v18 più recente, circa 2019.

Tasto destro del mouse DB: Attività> Genera script

Qui puoi selezionare alcune tabelle o andare con il valore predefinito di tutte.

Qui puoi selezionare alcune tabelle o andare con il valore predefinito di tutte. Per le mie esigenze sto indicando solo una tabella.

Successivamente, ci sono le "Opzioni di scripting" in cui è possibile scegliere il file di output, ecc. Come in più risposte sopra (di nuovo, sto solo rispolverando le vecchie risposte per SQL Server Management Studio più recente, v18.4) ciò che vogliamo davvero si trova sotto il pulsante "Avanzate". Per i miei scopi, ho bisogno solo dei dati.

Opzioni di output generali, incluso l'output su file. Opzioni avanzate inclusi i dati!

Infine, c'è un riepilogo della recensione prima dell'esecuzione. Dopo l'esecuzione viene visualizzato un rapporto sullo stato delle operazioni. Riepilogo recensione.


2

È inoltre possibile controllare il "componente aggiuntivo Data Scripter" per SQL Server Management Studio 2008 da:

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


La loro lista delle caratteristiche:

  • È stato sviluppato su SSMS 2008 e al momento non è supportato sulla versione 2005 (presto!)

  • Esporta rapidamente i dati in T-SQL per la sintassi MSSQL e MySQL

  • Sono supportati anche CSV, TXT, XML! Sfrutta tutto il potenziale, la potenza e la velocità che SQL ha da offrire.

  • Non aspettare che Access o Excel eseguano il lavoro di scripting per te che potrebbe richiedere diversi minuti: lascia che SQL Server lo faccia per te e fai tutto il lavoro di congettura per esportare i tuoi dati!

  • Personalizza il tuo output di dati per backup rapidi, manipolazione DDL e altro ...

  • Modifica i nomi delle tabelle e gli schemi del database in base alle tue esigenze, in modo rapido ed efficiente

  • Esporta i nomi delle colonne o semplicemente genera i dati senza i nomi.

  • Puoi scegliere singole colonne per lo script.

  • È possibile scegliere sottoinsiemi di dati (clausola WHERE).

  • È possibile scegliere l'ordinamento dei dati (clausola ORDER BY).

  • Ottima utility di backup per quelle operazioni di debugging del database che richiedono la manipolazione dei dati. Non perdere dati durante la sperimentazione. Manipola i dati al volo!


2

Tutto quanto sopra è bello, ma se è necessario

  1. Esporta i dati da più viste e tabelle con join
  2. Creare istruzioni di inserimento per diversi RDBMS
  3. Migrare i dati da qualsiasi RDBMS a qualsiasi RDBMS

quindi il trucco seguente è l'unico e unico modo.

Innanzitutto scopri come creare file di spool o esportare set di risultati dal client della riga di comando db di origine. In secondo luogo, scopri come eseguire le istruzioni sql sul db di destinazione.

Infine, creare le istruzioni insert (e qualsiasi altra istruzione) per il database di destinazione eseguendo uno script sql sul database di origine. per esempio

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;

L'esempio sopra è stato creato per il db di Oracle in cui è necessario l'uso di dual per selezioni senza tabella.

Il set di risultati conterrà lo script per il db di destinazione.


1

Ecco un esempio di creazione di uno script di migrazione dei dati utilizzando un cursore per scorrere la tabella di origine.

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

Dopo aver cercato molto, è stato il mio colpo migliore:

Se disponi di molti dati e hai bisogno di uno script compatto ed elegante, provalo: SSMS Tools Pack

Genera un'unione di tutte le istruzioni selezionate per inserire elementi nelle tabelle di destinazione e gestire le transazioni abbastanza bene.

Immagine dello schermo

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.