Exportation de données dans SQL Server en tant que INSERT INTO


413

J'utilise SQL Server 2008 Management Studio et j'ai une table que je souhaite migrer vers un autre serveur db.

Existe-t-il une option pour exporter les données sous forme d'insertion dans un script SQL ??

Réponses:


682

Dans SSMS dans l'Explorateur d'objets, faites un clic droit sur la base de données, faites un clic droit et choisissez "Tâches" puis "Générer des scripts".

Cela vous permettra de générer des scripts pour une ou toutes les tables, et l'une des options est "Script Data". Si vous définissez cela sur TRUE, l'assistant générera un script avec l'instruction INSERT INTO () pour vos données.

Si vous utilisez 2008 R2 ou 2012, cela s'appelle autre chose, voir la capture d'écran ci-dessous

texte alternatif

2008 R2 ou version ultérieure, par exemple 2012

Sélectionnez "Types de données à script" qui peuvent être "Données uniquement", "Schéma et données" ou "Schéma uniquement" - la valeur par défaut).

entrez la description de l'image ici

Et puis il y a un package " SSMS Addin " sur Codeplex (y compris la source) qui promet à peu près la même fonctionnalité et quelques autres (comme la recherche rapide, etc.)

texte alternatif


Je viens d'installer l'addin de Codeplex. Agréable. Merci pour l'info.
Rob Garrison

1
Le module complémentaire SMSS a fonctionné pour moi en 2008. Le module complémentaire Data Scripter n'a pas fonctionné.
Phil Hale

5
Dans 2008 R2, l'option "Types de données à script" se trouve sur l'écran "Définir les options de script". Appuyez sur le bouton "Avancé".
raymi

3
Ces compléments fonctionnent-ils dans 2008 R2? SSMS Addin lève une exception au chargement.
jocull

2
Jetez un oeil à la réponse @ruffin ci-dessous pour plus de captures d'écran
Keith Sirmons

117

Pour des raisons de cervelle trop explicite, après avoir suivi les instructions de marc_s ici ...

Dans SSMS dans l'Explorateur d'objets, cliquez avec le bouton droit sur la base de données, cliquez avec le bouton droit de la souris et choisissez "Tâches" puis "Générer des scripts".

... Je vois alors un écran d'assistant avec " Introduction, Choisir des objets, Définir les options de script, Résumé et Enregistrer ou publier des scripts " avec les boutons prev, next, finish, cancel en bas.

À l' étape Définir les options de script , vous devez cliquer sur "Avancé" pour obtenir la page avec les options. Ensuite, comme Ghlouw l' a mentionné, vous sélectionnez maintenant "Types de données à script" et profit.

bouton avancé SURLIGNÉ EN ROUGE! 1 !!


13
Merci, ce bouton n'a pas de placement très intuitif. Je suppose qu'il appartient à "Enregistrer dans un fichier".
Karel Kral

48

Si vous l'utilisez SQLServer 2008R2, vous devez définir les types de données sur le champ de script.

entrez la description de l'image ici




2
Si vous êtes confus comme moi, l'option "Types de données à script" n'est visible que dans les options "Avancées" de l'assistant "Générer des scripts ..." - vous ne la trouverez pas dans la boîte de dialogue des options principales!
Etherman

36

Si vous exécutez SQL Server 2008 R2, les options intégrées pour le faire dans SSMS car marc_s décrit ci-dessus ont légèrement changé. Au lieu de sélectionner Script data = truecomme indiqué dans son diagramme, il y a maintenant une nouvelle option appelée "Types of data to script"juste au-dessus du regroupement "Options de tableau / affichage". Ici, vous pouvez choisir de scripter uniquement les données, le schéma et les données ou le schéma uniquement. Fonctionne comme un charme.



6

Pour ceux qui recherchent une version en ligne de commande, Microsoft a publiémssql-scripter pour ce faire:

$ 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

Il semble que mssql-scriptter soit maintenant un projet mort.
Alex Suzuki

Certes, aucun développement ne s'est produit au cours de la dernière année, mais cela fonctionne bien pour moi.
Nickolay

3

Il suffit de mettre à jour des captures d'écran pour aider les autres alors que j'utilise une version 18 plus récente, vers 2019.

Cliquez avec le bouton droit sur DB: Tâches> Générer des scripts

Ici, vous pouvez sélectionner certaines tables ou choisir la valeur par défaut de toutes.

Ici, vous pouvez sélectionner certaines tables ou choisir la valeur par défaut de toutes. Pour mes propres besoins, je n'indique qu'une seule table.

Ensuite, il y a les "Options de script" où vous pouvez choisir le fichier de sortie, etc. Comme dans plusieurs réponses ci-dessus (encore une fois, je dépoussière les anciennes réponses pour les plus récentes, v18.4 SQL Server Management Studio) ce que nous voulons vraiment se trouve sous le bouton "Avancé". Pour mes propres besoins, j'ai juste besoin des données.

Options de sortie générales, y compris la sortie dans un fichier. Options avancées, y compris les données!

Enfin, il y a un résumé d'examen avant l'exécution. Après l'exécution, un rapport d'état des opérations s'affiche. Résumé des commentaires.


2

Vous pouvez également consulter le "Complément Data Scripter" pour SQL Server Management Studio 2008 à partir de:

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


Leur liste de fonctionnalités:

  • Il a été développé sur SSMS 2008 et n'est pas pris en charge sur la version 2005 pour le moment (bientôt!)

  • Exportez rapidement les données vers T-SQL pour la syntaxe MSSQL et MySQL

  • CSV, TXT, XML sont également pris en charge! Exploitez tout le potentiel, la puissance et la vitesse qu'offre SQL.

  • N'attendez pas qu'Access ou Excel fasse pour vous un travail de script qui pourrait prendre plusieurs minutes - laissez SQL Server le faire pour vous et éliminez toutes les suppositions lors de l'exportation de vos données!

  • Personnalisez votre sortie de données pour des sauvegardes rapides, la manipulation DDL et plus encore ...

  • Modifiez les noms de table et les schémas de base de données selon vos besoins, rapidement et efficacement

  • Exportez les noms des colonnes ou générez simplement des données sans les noms.

  • Vous pouvez choisir des colonnes individuelles à scripter.

  • Vous pouvez choisir des sous-ensembles de données (clause WHERE).

  • Vous pouvez choisir l'ordre des données (clause ORDER BY).

  • Excellent utilitaire de sauvegarde pour les opérations de débogage de bases de données grungy qui nécessitent une manipulation des données. Ne perdez pas de données pendant les tests. Manipulez les données à la volée!


2

Tout ce qui précède est agréable, mais si vous en avez besoin

  1. Exportez les données de plusieurs vues et tables avec des jointures
  2. Créer des instructions d'insertion pour différents SGBDR
  3. Migrer les données de n'importe quel SGBDR vers n'importe quel SGBDR

alors l'astuce suivante est le seul et unique moyen.

Apprenez d'abord à créer des fichiers spoule ou à exporter des jeux de résultats à partir du client de ligne de commande source db. Apprenez ensuite à exécuter des instructions sql sur la base de données de destination.

Enfin, créez les instructions d'insertion (et toutes les autres instructions) pour la base de données de destination en exécutant un script sql sur la base de données source. par exemple

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'exemple ci-dessus a été créé pour la base de données d'Oracle où l'utilisation de dual est nécessaire pour les sélections sans table.

Le jeu de résultats contiendra le script de la base de données de destination.


1

Voici un exemple de création d'un script de migration de données à l'aide d'un curseur pour itérer la table source.

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

Après beaucoup de recherches, c'était mon meilleur coup:

Si vous avez beaucoup de données et avez besoin d'un script compact et élégant, essayez-le: SSMS Tools Pack

Il génère une union de toutes les instructions select pour insérer des éléments dans les tables cibles et gérer assez bien les transactions.

Capture d'écran

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.