Nous écrivons une nouvelle application, et pendant les tests, nous aurons besoin d'un tas de données factices. J'ai ajouté ces données en utilisant MS Access pour vider les fichiers Excel dans les tables pertinentes.
De temps en temps, nous voulons «actualiser» les tables pertinentes, ce qui signifie les supprimer toutes, les recréer et exécuter une requête d'ajout MS Access enregistrée.
La première partie (supprimer et recréer) est un script sql facile, mais la dernière partie me fait grincer des dents. Je veux un script d'installation unique qui a un tas d'inserts pour régénérer les données factices.
J'ai maintenant les données dans les tableaux. Quelle est la meilleure façon de générer automatiquement une grande liste d'instructions INSERT à partir de cet ensemble de données?
La seule façon d'y penser est d'enregistrer le tableau dans une feuille Excel, puis d'écrire une formule Excel pour créer un INSERT pour chaque ligne, ce qui n'est certainement pas la meilleure façon.
J'utilise 2008 Management Studio pour me connecter à une base de données SQL Server 2005.
la source
Réponses:
Microsoft devrait annoncer cette fonctionnalité de SSMS 2008. La fonctionnalité que vous recherchez est intégrée à l' utilitaire de génération de script , mais la fonctionnalité est désactivée par défaut et doit être activée lors de l'écriture d'un script dans une table.
Il s'agit d'une analyse rapide pour générer les
INSERT
instructions pour toutes les données de votre table, sans aucun script ni complément dans SQL Management Studio 2008:Vous obtiendrez alors la
CREATE TABLE
déclaration et toutes lesINSERT
déclarations pour les données directement à partir de SSMS.la source
Data only
et rencontrez uneCyclic dependencies found
erreur, passez àSchema and data
pour éviter l'erreur. Se produit dans Management Studio v17.Nous utilisons cette procédure stockée - elle vous permet de cibler des tables spécifiques et d'utiliser des clauses where. Vous pouvez trouver le texte ici .
Par exemple, cela vous permet de faire ceci:
Code source copié à partir du lien:
la source
Tel que mentionné par @Mike Ritacco mais mis à jour pour SSMS 2008 R2
Vous obtiendrez alors toutes les instructions INSERT pour les données directement à partir de SSMS.
EDIT 2016-10-25 SQL Server 2016 / SSMS 13.0.15900.1
Clic droit sur le nom de la base de données
Choisissez Tâches> Générer des scripts
Selon vos paramètres, la page d'introduction peut s'afficher ou non
Choisissez 'Sélectionner des objets de base de données spécifiques',
Développez l'arborescence et vérifiez les tableaux pertinents
Cliquez sur Suivant
Cliquez sur Avancé
Dans la section Général, choisissez l'option appropriée pour «Types de données à script»
Cliquez sur OK
Choisissez si vous voulez que la sortie aille dans une nouvelle requête, le presse-papiers ou un fichier
Cliquez deux fois sur Suivant
Votre script est préparé conformément aux paramètres que vous avez choisis ci-dessus
Cliquez sur Terminer
la source
Cela peut être fait en utilisant
Visual Studio
aussi (au moins dans la version 2013 et les suivantes).Dans VS 2013, il est également possible de filtrer la liste des lignes sur lesquelles est basée l'instruction inserts, ce qui n'est pas possible dans SSMS, comme je le sais.
Effectuez les étapes suivantes:
Cela créera les instructions d'insertion (conditionnelles) de la table sélectionnée dans la fenêtre ou le fichier actif.
Les boutons "Filtre" et "Script" Visual Studio 2013 :
la source
Vous pouvez utiliser SSMS Tools Pack (disponible pour SQL Server 2005 et 2008). Il est livré avec une fonctionnalité pour générer des instructions d'insertion.
http://www.ssmstoolspack.com/
la source
J'utilise la version 10.0.5500.0 de SSMS 2008. Dans cette version dans le cadre de l'assistant Générer des scripts, au lieu d'un bouton Avancé, il y a l'écran ci-dessous. Dans ce cas, je voulais juste que les données soient insérées et aucune instruction create, j'ai donc dû changer les deux propriétés encerclées
la source
Procédure stockée de Jane Dallaway: http://docs.google.com/leaf?id=0B_AkC4ZdTI9tNWVmZWU3NzAtMWY1My00NjgwLWI3ZjQtMTY1NDMxYzBhYzgx&hl=en_GB . La documentation est une série d'articles de blog: https://www.google.com/search?q=spu_generateinsert&as_sitesearch=http%3A%2F%2Fjane.dallaway.com
la source
Si vous avez besoin d'un accès programmatique, vous pouvez utiliser une procédure stockée open source `GenerateInsert.
INSERT générateur (s) d'instructions
Comme exemple simple et rapide, pour générer des instructions INSERT pour une table,
AdventureWorks.Person.AddressType
exécutez les instructions suivantes:Cela générera le script suivant:
la source
Le premier lien vers sp_generate_inserts est assez cool, voici une version vraiment simple:
Sur mon système, j'obtiens ce résultat:
la source
Ma contribution au problème, un générateur de script Powershell INSERT qui vous permet de scripter plusieurs tables sans avoir à utiliser la lourde interface graphique SSMS. Idéal pour la persistance rapide des données de «graine» dans le contrôle de source.
Par défaut, le script INSERT généré sera "SeedData.sql" dans le même dossier que le script.
Vous aurez besoin des assemblys SQL Server Management Objects installés, qui devraient être là si vous avez SSMS installé.
la source
N'utilisez pas d'inserts, utilisez BCP
la source
Vous pouvez peut-être essayer l'Assistant Publication de SQL Server http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Il a un assistant qui vous aide à insérer des instructions d'insertion de script.
la source
GenerateData est un outil étonnant pour cela. Il est également très facile d'y apporter des modifications car le code source est à votre disposition. Quelques fonctionnalités intéressantes:
la source
J'ai utilisé ce script que j'ai mis sur mon blog ( Comment générer des procédures d'instruction d'insertion sur un serveur SQL ).
Jusqu'à présent, cela a fonctionné pour moi, bien qu'il puisse s'agir de bogues que je n'ai pas encore découverts.
la source
J'utilise sqlite pour ce faire. Je le trouve très, très utile pour créer des bases de données scratch / test.
sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql
la source
Avez-vous déjà des données dans une base de données de production? Si tel est le cas, vous pouvez configurer une actualisation périodique des données via DTS. Nous faisons le nôtre chaque semaine le week-end et c'est très agréable d'avoir des données propres et réelles chaque semaine pour nos tests.
Si vous n'avez pas encore de production, vous devez créer une base de données qui est qu'ils veulent que vous le vouliez (frais). Ensuite, dupliquez cette base de données et utilisez cette base de données nouvellement créée comme environnement de test. Lorsque vous voulez la version propre, dupliquez simplement votre propre version et Bob est votre oncle .
la source
Si vous préférez utiliser Google Sheets, utilisez SeekWell pour envoyer le tableau à une feuille, puis insérez des lignes selon un calendrier, à mesure qu'elles sont ajoutées à la feuille.
Voir ici pour le processus étape par étape, ou regarder une démo vidéo de la fonctionnalité ici.
la source
Il existe de nombreux bons scripts ci-dessus pour générer des instructions d'insertion, mais j'ai essayé l'un des miens pour le rendre aussi convivial que possible et pour pouvoir également faire des instructions UPDATE. + empaqueter le résultat prêt pour les fichiers .sql qui peuvent être stockés par date.
Il prend en entrée votre instruction SELECT normale avec la clause WHERE, puis génère une liste d'instructions d'insertion et d'instructions de mise à jour. Ensemble, ils forment une sorte de IF NOT EXISTS () INSERT ELSE UPDATE Il est également utile lorsqu'il existe des colonnes non actualisables qui doivent être exclues de l'instruction INSERT / UPDATE finale.
Une autre chose que le script ci-dessous peut faire est: il peut même gérer des INNER JOIN avec d'autres tables comme instruction d'entrée pour le proc stocké. Il peut être utile en tant qu'outil de gestion des versions d'un pauvre qui se trouve au bout de vos doigts où vous tapez les instructions sql SELECT toute la journée.
message d'origine: générer une instruction UPDATE dans SQL Server pour une table spécifique
la source
pourquoi ne pas simplement sauvegarder les données avant de les utiliser, puis les restaurer lorsque vous souhaitez les actualiser?
si vous devez générer des insertions, essayez: http://vyaskn.tripod.com/code.htm#inserts
la source
Je ne sais pas si je comprends bien votre question.
Si vous avez des données dans MS-Access, que vous souhaitez déplacer vers SQL Server - vous pouvez utiliser DTS.
Et, je suppose que vous pouvez utiliser le profileur SQL pour voir toutes les instructions INSERT passer, je suppose.
la source
J'ai également fait beaucoup de recherches à ce sujet, mais je n'ai pas pu trouver de solution concrète à cela. Actuellement, l'approche que je suis consiste à copier le contenu dans Excel à partir de SQL Server Managment studio, puis à importer les données dans Oracle-TOAD, puis à générer les instructions d'insertion
la source
Vous pouvez générer une instruction INSERT ou MERGE avec cette application simple et gratuite que j'ai écrite il y a quelques années:
Data Script Writer (Desktop Application for Windows)
De plus, j'ai récemment écrit un article de blog sur ces outils et sur l'approche à utiliser SSDT pour une base de données de déploiement avec des données. En savoir plus:
Script et déployer les données pour la base de données du projet SSDT
la source
J'ai fait un utilitaire simple à utiliser, j'espère que vous apprécierez.
Si les instructions INSERT générés sont tronqués, vérifier la longueur du texte limite des résultats sur Options Management Studio:
Tools > Options
,Query Results > SQL Server > Results to Grid
, la valeur « données non XML » sous « caractères maximum Récupéré ».la source