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:
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:
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" :
- 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. |