2010-11-03 10 views
11

Comment puis-je exporter une table à partir d'une base de données SQL Server 2000 vers un fichier .sql en tant que groupe d'instructions INSERT INTO? L'un des champs de la table est un type de données Texte et contient du code HTML. Il serait donc fastidieux de le faire à la main. J'ai accès à SQL Server Management Studio 2008 pour accéder à la base de données SQL Server 2000. Je n'ai pas accès à SQL Server Management Studio 2008.Comment exporter les données d'une table dans des instructions INSERT?

Répondre

17

Vérifiez la SSMS Tool Pack - c'est un grand, GRATUIT add-on pour SQL Server Management Studio qui fait beaucoup de choses - entre autres, il peut générer des instructions INSERT d'une table donnée.

alt text

+0

Wow, ce complément est très bien, j'espère que cela fonctionne aussi avec Express Edition. –

+2

A partir de SQLSMS 2012, l'outil n'est plus gratuit, bien qu'il offre un essai de temps de 30 jours. Voir la réponse de Mobill, il y a un moyen intégré pour y parvenir. – Jerther

2

Si vous pouvez utiliser la gestion d'autres DB apps la plus rapide serait d'utiliser un outil comme SqlDbx qui a une fonction intégrée « Exporter comme inserts (SQL) » (il suffit d'exécuter une requête comme SELECT * FROM Table puis utilisez la menu contextuel de la grille des résultats).

Si vous devez coller à SQL Management Studio vous pouvez utiliser une procédure stockée comme celui-ci:

http://vyaskn.tripod.com/code/generate_inserts.txt

Il génère un ensemble de résultats avec l'instruction SQL INSERT pour chaque ligne de la cible table. Ensuite, vous pouvez exporter les résultats dans un fichier, ou simplement les copier dans le presse-papiers et les coller dans la fenêtre de requête (cela fonctionne bien même avec plusieurs mégaoctets de données).

9

J'utilise cette procédure stockée depuis longtemps: sp_generate_inserts: la version 2000 et la version 2005 (and up).

Vous l'utiliser comme ceci:

sp_generate_inserts 'thetablename' 

ou si vous souhaitez filtrer:

sp_generate_inserts 'thetablename', @from='from ... where ... order by ...' 

Le sp renverra les déclarations des encarts comme les résultats de la requête. N'oubliez pas de modifier le paramètre: augmentez le nombre maximal de caractères affichés dans chaque colonne (outils - options - résultats de la requête).

17

Mise à jour depuis cette date Q & A était au sommet des résultats de la recherche lorsque je cherchais la réponse.

En MSSQL 2008 R2:

Clic droit sur la base de données: Tâches -> Générer des scripts ...

Générer et publier boîte de dialogue Scripts s'affiche. La page Intro est sans valeur. Cliquez sur "Suivant"

Choisissez "Sélectionner des objets de base de données spécifiques", puis sélectionnez la ou les tables pour lesquelles vous souhaitez obtenir des insertions. Cliquez sur Suivant et la boîte de dialogue avancera vers le "Set Scripting Options".

Cliquez sur Avancé et vous devriez voir:

enter image description here

Faites défiler la liste des options jusqu'à ce que vous trouverez « Types de données à script ». Cliquez sur cette ligne et choisissez "Data Only" dans le menu déroulant. Cliquez sur OK". Choisissez vos options de sauvegarde et cliquez sur "Suivant" à quelques reprises.

Remarque - La sortie comprend également les éléments suivants toutes les 100 insertions.

GO 
    print 'Processed 200 total records' 
+1

Je ne sais pas ce n'est pas la meilleure réponse. Peut-être parce que cela ne s'applique pas à SQL Server 2000. Mais c'est exactement ce que je cherchais. –

+0

A travaillé pour moi aussi - merci. –

+0

Je suis passé à SSMS 2012, et pour une raison quelconque, le script n'inclut plus l'impression de "processus xxx records". Comment est-ce que je le récupère? – ulu