28 votes

Générateurs de données pour le serveur SQL ?

J'aimerais recevoir des suggestions sur les générateurs de données qui sont disponibles, pour le serveur SQL. Si vous postez une réponse, veuillez indiquer les caractéristiques qui vous semblent importantes.

Je n'ai jamais utilisé d'application de ce type et je cherche donc à me renseigner sur le sujet. Je vous remercie.

(Mon objectif est de remplir une base de données avec plus de 10 000 enregistrements dans chaque table, pour tester une application).

23voto

Galwegian Points 29966

J'ai utilisé le générateur de données dans le passé. Cela peut valoir le coup de jeter un coup d'oeil.

13voto

Pascal Paradis Points 2833

Une question similaire a été posée ici : http://stackoverflow.com/questions/16317/creating-test-data-in-a-database

Générateur de données SQL de Red Gate fait un excellent travail dans ce domaine. Vous pouvez personnaliser chaque champ de votre base de données et utiliser des données aléatoires avec des graines. Et même créer des modèles spécifiques en utilisant des expressions Regex.

10voto

Goran Points 3996

J'ai créé mon propre générateur de données qui génère des données aléatoires conformes à des expressions régulières. C'est devenu un projet d'apprentissage (en cours de développement) et il est disponible à l'adresse suivante googlecode .

7voto

S.Lott Points 207588

Pour générer des données échantillons, j'utilise des applications Python simples.

Considérations :

  1. Simple à modifier et à configurer.

  2. Un ensemble de données reproductibles que vous pouvez utiliser pour tester les performances et obtenir des résultats cohérents.

  3. Respectez toutes les règles et contraintes d'intégrité référentielle de la BD.

  4. Des données réalistes.

Les deux premières indiquent que vous voulez produire des fichiers script qui chargeront vos données. La troisième est plus difficile. Il existe des moyens de découvrir les métadonnées et les contraintes de la base de données. En regardant 3 et 4 ensemble, vous ne voulez pas une simple ingénierie inverse -- vous voulez quelque chose que vous pouvez contrôler pour produire des valeurs réalistes.

En règle générale, vous souhaitez créer votre propre modèle d'entité afin de vous assurer que les plages et les relations clés sont correctes.

Vous pouvez le faire de trois façons.

  1. Génère des fichiers CSV de données que vous pouvez charger manuellement. De belles données de test répétables.

  2. Générer des scripts SQL que vous pouvez exécuter. De belles données reproductibles, également.

  3. Utilisez une connexion ODBC pour générer des données directement dans la base de données. En fait, je n'aime pas autant cette méthode, mais vous pourriez l'utiliser.

Voici une version dépouillée, à une table seulement, d'un générateur de données qui écrit un fichier CSV.

import csv
import random

class SomeEntity( list ):
    titles = ( 'attr1', 'attr2' ) # ... for all columns
    def __init__( self ):
        self.append( random.randrange( 1, 10 ) )
        self.append( random.randrange( 100, 1000 ) )
        # ... for all columns

myData = [ SomeEntity() for i in range(10000) ]
aFile= open( 'tmp.csv', 'wb' )
dest= csv.writer( aFile )
dest.writerow( SomeEntity.titles )   
dest.writerows( myData )
aFile.close()

Pour les entités multiples, vous devez calculer la cardinalité. Au lieu de générer des clés aléatoires, vous voulez faire une sélection aléatoire parmi les autres entités. Ainsi, ChildEntity pourrait choisir un élément aléatoire de ParentEntity pour s'assurer que la relation FK-PK est correcte.

Utilisez random.choice(someList) y random.shuffle(someList) pour assurer l'intégrité référentielle.

3voto

ScottStonehouse Points 6513

Visual Studio Team System Database Edition (alias Data Dude) le fait.

Je ne l'ai pas encore utilisé pour la génération de données, mais deux fonctionnalités semblent intéressantes :

  1. Définissez votre propre valeur de départ pour le générateur de données aléatoires. Cela vous permet de produire les mêmes données aléatoires plusieurs fois.

  2. Dirigez l'assistant vers une "vraie" base de données et faites-lui générer quelque chose qui ressemble à des données réelles.

Peut-être s'agit-il de caractéristiques standard ailleurs ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X