Risposte:
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
Seleziona "Tipi di dati da script" che possono essere "Solo dati", "Schema e dati" o "Solo schema" - impostazione predefinita).
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.)
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.
Se lo si utilizza SQLServer 2008R2, è necessario impostare Tipi di dati nel campo script.
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 = true
come 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.
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
Sto solo aggiornando gli screenshot per aiutare gli altri mentre sto usando un v18 più recente, circa 2019.
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.
Infine, c'è un riepilogo della recensione prima dell'esecuzione. Dopo l'esecuzione viene visualizzato un rapporto sullo stato delle operazioni.
È 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!
Tutto quanto sopra è bello, ma se è necessario
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.
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'
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.