Réponses:
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
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).
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.)
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.
Si vous l'utilisez SQLServer 2008R2, vous devez définir les types de données sur le champ de script.
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 = true
comme 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.
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 suffit de mettre à jour des captures d'écran pour aider les autres alors que j'utilise une version 18 plus récente, vers 2019.
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.
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.
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!
Tout ce qui précède est agréable, mais si vous en avez besoin
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.
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'
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.