web-dev-qa-db-fra.com

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

J'utilise SQL Server 2008 Management Studio et je souhaite migrer une table vers un autre serveur de base de données.

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

389
Jack Kada

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

Cela vous permettra de générer des scripts pour une ou plusieurs tables, l'une des options étant "Données de script". 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 celui-ci

alt text

2008 R2 ou plus tard, par exemple 2012

Sélectionnez "Types de données dans un script" pouvant être "Données uniquement", "Schéma et données" ou "Schéma uniquement" (option par défaut).

enter image description here

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

alt text

651
marc_s

Dans le souci de déconnaissance cérébrale trop explicite, après avoir suivi instructions de marc_s jusqu'à here ...

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

... Je vois alors un écran avec " Introduction, Choisir des objets, Définir les options de script, Résumé et Enregistrer ou publier des scripts " avec prev, next , terminer, annuler les boutons 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 à écrire" et vous en tirez profit.

advanced button HIGHLIGHTED IN RED!1!!

110
ruffin

Si vous l'utilisez SQLServer 2008R2, vous devez définir Types de données dans un champ de script.

enter image description here

46
Azadeh Khojandi

Si vous exécutez SQL Server 2008 R2, les options intégrées permettant de le faire dans SSMS en tant que marc_s décrites ci-dessus ont légèrement changé. Au lieu de sélectionner Script data = true comme indiqué dans son diagramme, une nouvelle option appelée "Types of data to script" se trouve juste au-dessus du groupe "Options de table/vue". Ici, vous pouvez choisir de n'écrire que des données, un schéma et des données ou un schéma uniquement. Fonctionne comme un charme.

36
Ghlouw

Pour ceux qui recherchent une version en ligne de commande, Microsoft publié mssql-scripter pour le 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
5
Nickolay

pour serveur SQL Server Mng Studio 2016:

enter image description here

4
ingconti

Vous pouvez également consulter le "complément de scripteur de données" pour SQL Server Management Studio 2008 auprès 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 des données vers T-SQL pour la syntaxe MSSQL et MySQL

  • CSV, TXT, XML sont également supportés! Exploitez tout le potentiel, la puissance et la vitesse offertes par SQL.

  • N'attendez pas qu'Access ou Excel fassent un travail de script pour vous qui puisse prendre plusieurs minutes. Laissez SQL Server le faire pour vous et supprimez tout le travail de exportation de vos données!

  • Personnalisez la sortie de vos données pour les sauvegardes rapides, la manipulation DDL, etc.

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

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

  • Vous pouvez choisir des colonnes individuelles pour le script.

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

  • Vous pouvez choisir la commande des données (clause ORDER BY).

  • Excellent utilitaire de sauvegarde pour les opérations de débogage de base de données fastidieuses nécessitant une manipulation des données. Ne perdez pas de données en expérimentant. Manipuler des données à la volée!

2
Nate

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

  1. Exporter des données à partir de plusieurs vues et tables avec jointures
  2. Créer des instructions d'insertion pour différents SGBDR
  3. Migrer les données d'un SGBDR vers un SGBDR

alors le tour suivant est le seul et unique moyen.

Commencez par apprendre à créer des fichiers spool ou à exporter des ensembles de résultats à partir du client en ligne de commande source. Deuxièmement, apprendre à exécuter des instructions SQL sur la base de données de destination.

Enfin, créez les instructions insert (et toute autre instruction) 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 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 destination.

2
Αλέκος

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'
1
Shane

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 cible et gérer les transactions très bien.

Capture d'écran

0