menu
  Home  ==>  articles  ==>  bdd  ==>  data_extractor   

Data Extractor - John COLIBRI.

  • résumé : utilitaire pour générer des listes de données littérales, utilisables pour construire des jeux de test ou de démonstration
  • mots clé : extraction de données - jeu de test
  • logiciel utilisé : Windows XP personnel, Delphi 6.0
  • matériel utilisé : Pentium 2.800 Mhz, 512 Meg de mémoire, 250 Giga disque dur
  • champ d'application : Delphi 1 à 2006, Turbo Delphi sur Windows
  • niveau : développeur Delphi
  • plan :


1 - Introduction

Pour générer automatiquement des données (pour les démonstrations ou pour les jeux de test), les valeur chaînes littérales sont générées en tirant aléatoirement les valeurs de liste de chaînes connues. Par exemple, pour créer des lignes ayant une colonne "VILLE", nous utilisons une liste de villes (Paris, New York, Narbonne, ...) et nous tirons aléatoirement une valeur dans cette liste pour chaque ligne de notre table. Nous pouvons ainsi créer des listes de pays, de nom de devise, les prénoms et noms de famille etc.

Pour créer nos listes de départ, nous pouvons saisir ces noms manuellement et les placer dans les fichiers qui seront utilisés pour la génération aléatoire. Pour les noms connus (les villes et les pays), de telles listes doivent exister ici ou là. Pour les noms propres (nom de famille), à part DUPOND et DURAND, la création manuelle est plus pénible. Une solution est de récupérer ces chaînes littérales dans les bases de données de démonstration fournies ici ou là (Mastapp, Employee, NorthWind etc). C'est ainsi que nous avons récupéré dans MASTAPP des noms tels que "Stansbury, Ramanathan, Nordstrom, Sutherland", qui sonnent très "vrai" et auxquels nous n'aurions peut être pas pensé.

Le petit utilitaire que nous allons présenter se charge de faciliter l'extraction de telles valeurs littérales de bases de données existantes.




2 - Principe

Le principe de l'utilitaire est simple:
   l'utilisateur sélectionne un base de données
   les tables sont listées
   l'utilisateur clique sur une table
   les champs sont listés
   l'utilisateur clique sur un champ
   les valeurs distinctes de ce champ sont affichés
   l'utilisateur décide de placer ces valeurs dans un fichier .TXT, ou d'ajouter ces nouvelles valeurs à l'un des fichiers .TXT existants
En gros il s'agit simplement d'un outil d'affichage général, avec possibilité de récupérer les valeurs littérales et de les sauvegarder dans des fichiers .TXT




3 - Le Projet Delphi

3.1 - Organisation générale

Rien qui ne puisse se faire en utilisant les composants d'accès usuels de Delphi. Comme cet utilitaire n'a rien de renversant, nous avons choisi d'employer au maximum nos UNITés existantes pour ouvrir la base, lister les noms de tables, de champs, et concaténer sans doublons des chaînes littérales.



3.2 - L'application finale

Comme nous ne rentrerons pas trop dans le détail du code, nous présentons déjà l'application finale:

image



3.3 - Les unités utilisées

L'unité U_IBX a été utilisée pour simplifier l'accès aux bases de données: connection, liste des noms de tables, liste des colonnes d'une table, ouverture d'un tDataSet etc.

L'unité U_STRINGLIST fournit les primitives de concaténation de tStringList, avec éventuellement suppression des doublons



3.4 - Le programme principal

L'onglet "database_" permet de localiser et ouvrir une base. Puis l'onglet "extract_" lance l'affichage des tables et des colonnes.

Une fois une colonne sélectionnée, un tDataset récupère les valeurs de cette colonne, qui sont présentées dans le tMemo central pour examen.

Si l'utilisateur décide d'ajouter ces valeurs aux fichiers .TXT, il peut

  • soit taper un nom de fichier (par exemple "NOM_FAMILLE") suivi de Entrée dans le tEdit de droite
  • soit cocher "save_checkbox_" et sélectionner l'un des fichiers qui est listé dans la tListBox de droite


Les données ainsi sauvegardées sont placées dans des fichiers .TXT qui sont faciles à modifier, copier, corriger, augmenter, manuellement ou par tout autre technique. Mentionnons simplement que nous avons placé en tête de chaque nouveau paquet de données un commentaire indiquant d'où proviennent les données. Par exemple (partiel):

 
// -- MASTSQL.GDB.CUSTOMER.CITY
Kapaa Kauai
Freeport
Kato Paphos
Grand Cayman
Bogota
// -- MASTSQL.GDB.VENDORS.CITY
Southfield
Indianapolis
Berkely
Macon
// -- employee_6.gdb.CUSTOMER.CITY
Dallas
Boston
Manchester
Central Hong Kong
Ottawa
// -- employee_6.gdb.DEPARTMENT.LOCATION
Monterey
San Francisco
Burlington, VT
Toronto
Cannes



3.5 - Mini Manuel

Pour utiliser le projet:
   compilez le projet
   si la base par défaut ne convient pas, dans l'onglet "database_", sélectionnez le répertoire puis la base de données

image

   dans l'onglet "extract_", si le nom des tables n'est pas encore affichez, cliquez "open_database"
   sélectionnez une table
   les colonnes de cette table sont présentées

image

   cliquez une colonne, et, si les données conviennent, cochez "save_check_box_" et cliquez le nom du fichier .TXT dans la tListBox de droite, ou tapez le nom du fichier .txt et tapez Entrée



4 - Télécharger le code source Delphi

Vous pouvez télécharger:
  • data_extractor.zip : le projet qui extrait les données littérales et les unités auxiliaires, ainsi que les données extraites de MASTAPP et EMPLOYEE (41 K)

Ce .ZIP qui comprend:

  • le .DPR, la forme principale, les formes annexes eventuelles
  • les fichiers de paramètres (le schéma et le batch de création)
  • dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonaume)
Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent:
  • créez un répertoire n'importe où sur votre machine
  • placez le .ZIP dans ce répertoire
  • dézippez et les sous-répertoires nécessaires seront créés
  • compilez et exécutez
Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Pour supprimer le projet, effacez le répertoire.

La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de compilation: K_onstant, T_ype, G_lobal, L_ocal, P_arametre, F_unction, C_lasse. Elle est présentée plus en détail dans l'article La Notation Alsacienne



Comme d'habitude:

  • nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
  • tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
  • plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
    Nom :
    E-mail :
    Commentaires * :
     

  • et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.



5 - L'auteur

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil (composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
Créé: mar-06. Maj: aou-15  148 articles, 471 sources .ZIP, 2.021 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2015
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
      + programmation_oracle
      + interbase
      + sql_server
      + firebird
      + mysql
      + xml
      – paradox_via_ado
      – mastapp
      – delphi_business_objects
      – clientdataset_xml
      – data_extractor
      – rave_report_tutorial
      – visual_livebindings
      – migration_bde
    + web_internet_sockets
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
    + graphique
    + delphi
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
    + colibri_skelettons
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog