Quelle est la meilleure façon de générer automatiquement des instructions INSERT pour une table SQL Server?
Nous écrivons une nouvelle application, et lors du test, nous avons besoin d'un tas de données factices. J'ai ajouté que les données en utilisant MS Access pour le vidage des fichiers excel dans les tableaux correspondants.
Chaque tellement souvent, que nous voulons à "rafraîchir" les tableaux pertinents, ce qui signifie l'abandon de tous, re-créant et en exécutant un sauvés MS Access requête ajout.
La première partie (chute de & re-création) est un simple script sql, mais la dernière partie me fait grincer des dents. Je veux un seul script d'installation qui a un tas de plaquettes pour régénérer les données factices.
J'ai les données dans les tables. Quelle est la meilleure façon de générer automatiquement une grande liste d'instructions INSERT à partir de ce dataset?
La seule façon que je peux penser de le faire est d'enregistrer le tableau sur une feuille excel, puis d'écrire une formule excel pour créer un INSERT pour chaque ligne, ce qui n'est certainement pas le meilleur moyen.
Je suis en utilisant le 2008 Management Studio pour vous connecter à un Serveur SQL server 2005 bases de données.
- Wow, je viens de vérifier sur mon installation et, vous avez raison, le "script de table en tant que" -> "INSÉRER" ne vous donne qu'un modèle d'insertion, pas une page de plaquettes avec vos données! J'espère que votre question obtient répondu parce que je voudrais un moyen facile de faire ce que vous demandez trop.
- J'ai mis à jour la question un peu à une tentative d'massivement de simplifier et de clarifier la situation, et de le garder pertinent. C'est devenu une séminal question sur StackOverflow, et il serait bon de garder la charge de travail vers le bas sur les gens qui viennent ici pour trouver une solution. =) Voir si vous trouvez l'un de la suppression d'informations importantes. Si vous avez des objections à l'égard de la modifier hésitez pas à reculer.
- Merci Evan. J'ai fait de rouler de nouveau; j'ai l'honneur de suggérer que certaines des informations d'arrière-plan n'est pas seulement utile pour le contexte, mais aussi pour aider la question de monter avec le monde réel, les termes de recherche. Je n'en garder un de vos modifications; j'ai laissé de côté le paragraphe concernant les Toad pour Oracle. Ce n'est probablement pas très utile.
Vous devez vous connecter pour publier un commentaire.
Microsoft devrait annoncer cette fonctionnalité de SSMS 2008. La fonctionnalité que vous recherchez est intégré dans le Générer un Script l'utilité, mais la fonctionnalité est désactivée par défaut et doit être activée lors de la création d'une table.
C'est une course rapide à travers pour générer le
INSERT
consolidés pour toutes les données dans votre tableau, sans utiliser de scripts ou de compléments de SQL Management Studio 2008:Vous obtiendrez alors la
CREATE TABLE
déclaration et de tous lesINSERT
consolidés pour les données directement de la SSMS.Data only
et rencontreCyclic dependencies found
d'erreur, passez àSchema and data
pour éviter l'erreur. Qui se passe dans Management Studio v17.USE [DB] GO
Nous utilisons cette procédure stockée - il vous permet de cibler des tables, et d'utiliser les clauses where. Vous pouvez trouver le texte ici.
Par exemple, il vous permet de faire cela:
Comme mentionné par @Mike Ritacco mais mis à jour pour SSMS 2008 R2
Vous obtiendrez alors toutes les instructions d'INSERTION pour les données directement de la SSMS.
MODIFIER 2016-10-25 SQL Server 2016/SSMS 13.0.15900.1
Clic droit sur le nom de la base
Choisir les Tâches > Générer des scripts
En fonction de vos paramètres de la page d'intro peut montrer ou ne pas montrer
Choisissez "Sélectionner des objets de base de données',
Développez l'arborescence de la vue et de vérifier les tableaux pertinents
Cliquez Sur Suivant
Cliquez Sur Avancé
En vertu de la section Générale, choisissez l'option appropriée pour les " Types de données à
script'
Cliquez sur OK
Choisir si vous voulez la sortie pour aller à une nouvelle requête, le presse-papiers ou un
fichier
Cliquez deux fois sur Suivant
Votre script est préparé en conformité avec les paramètres que vous avez choisi ci-dessus
Cliquez Sur Terminer
Cela peut être fait en utilisant
Visual Studio
trop (au moins dans la version 2013).VS 2013, il est également possible de filtre la liste des lignes les inserts déclaration reposent sur, c'est pas quelque chose de possible dans SSMS que pour que je le sais.
Effectuez les étapes suivantes:
Cela va créer de l' (conditionnel) insert de la table sélectionnée pour la fenêtre active ou d'un fichier.
Le "Filtre" et "Script" boutons de Visual Studio 2013:
Vous pouvez utiliser SSMS Pack d'Outils (disponible pour SQL Server 2005 et 2008). Il est livré avec une fonctionnalité pour générer des instructions insert.
http://www.ssmstoolspack.com/
Je suis l'aide de SSMS 2008 version 10.0.5500.0. Dans cette version en tant que partie de la génération de Scripts de l'assistant, au lieu d'un bouton Avancé, il y a l'écran ci-dessous. Dans ce cas, je voulais juste les données insérées et pas de créer des états, donc j'ai du changer les deux entourés propriétés
Jane Dallaway de la procédure stockée: http://docs.google.com/leaf?id=0B_AkC4ZdTI9tNWVmZWU3NzAtMWY1My00NjgwLWI3ZjQtMTY1NDMxYzBhYzgx&hl=en_GB.
La Documentation est une série de billets de blog: https://www.google.com/search?q=spu_generateinsert&as_sitesearch=http%3A%2F%2Fjane.dallaway.com
Le premier lien de sp_generate_inserts est assez cool, ici est un version simple:
Sur mon système, j'obtiens ce résultat:
Ma contribution à ce problème, une Powershell INSÉRER générateur de script qui vous permet de créer un script plusieurs tables sans avoir à utiliser la lourdeur de SSMS GUI. Idéal pour rapidement la persistance de la "graine" de données dans la source de contrôle.
Par défaut, l'INSERTION de script généré sera "SeedData.sql" dans le même dossier que le script.
Vous aurez besoin de SQL Server Management Objects assemblées installé, ce qui devrait être là, si vous avez SSMS installé.
Si vous avez besoin d'un accès par programme, alors vous pouvez utiliser de l'open source de procédure stockée `GenerateInsert.
Instruction INSERT(s) générateur
Seulement comme un moyen simple et rapide exemple, pour générer des états d'INSERTION pour une table
AdventureWorks.Person.AddressType
exécuter les instructions suivantes:Cela va générer le script suivant:
De ne pas utiliser des inserts, utilisez BCP
Peut-être vous pouvez essayer le Serveur SQL server Assistant de Publication
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Il a un assistant qui vous permet de script insérer consolidés.
GenerateData est un formidable outil pour cela. Il est aussi très facile de faire des ajustements à elle, car le code source est disponible pour vous. Quelques fonctionnalités sympas:
J'ai utilisé ce script que j'ai mis sur mon blog (Comment-pour produire de l'instruction Insert procédures sur sql server).
Jusqu'à présent, a travaillé pour moi, bien qu'ils pourraient être des bugs, je n'ai pas encore découvert .
J'utilise sqlite pour ce faire. Je trouve ça très, très utile pour la création de scratch/bases de données test.
sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql
Avez-vous des données dans une base de données de production encore? Si oui, vous pouvez configurer une période de rafraîchissement des données par l'intermédiaire de DTS. Nous faisons nôtre semaine, les week-ends et il est très agréable d'avoir à nettoyer, de vraies données chaque semaine pour nos tests.
Si vous n'avez pas la production mais, ensuite, vous devez créer une base de données qui est qu'ils veulent que vous voulez (frais). Ensuite, dupliquer la base de données et d'utiliser cette base de données nouvellement créée comme votre environnement de test. Lorsque vous voulez la version propre, il suffit de dupliquer votre propre une nouvelle fois et Bob's your uncle.
Si vous préférez utiliser les Feuilles de calcul Google, utilisez SeekWell pour Envoyer la table une Feuille, puis insérer des lignes sur un calendrier, comme ils sont ajoutés à la Feuille.
Voir ici pour le processus étape par étape , ou regarder un vidéo de démonstration de la fonctionnalité ici.
pourquoi ne pas sauvegarder les données avant de votre travail avec elle, puis restaurer quand vous voulez être actualisé?
si vous devez générer des inserts essayer: http://vyaskn.tripod.com/code.htm#inserts
Pas sûr, si je comprends bien votre question correctement.
Si vous avez des données dans MS-Access, qui vous voulez déplacer vers SQL Serveur, vous pourriez utiliser DTS.
Et, je suppose que vous pourriez utiliser le générateur de profils SQL pour voir toutes les instructions d'INSERTION passe par la, je suppose.
J'ai aussi fait des recherches beaucoup cela, mais je ne pouvais pas obtenir la solution concrète pour cela. Actuellement, la démarche que j'ai suivi est de copier le contenu dans excel à partir de SQL Server Management studio, puis importer les données dans Oracle TOAD et ensuite de générer les instructions d'insertion