4D v11 SQL Assimilator
Par Charles VASS, membre de l’équipe des services techniques, 4D Inc.
Note technique 4D-200909-17-FR
Version 1 - Date 1 septembre 2009
Résumé
Le composant 4D v11 SQL Assimilator permet aux développeurs de migrer facilement et rapidement des
bases existantes vers une base 4D v11 SQL hôte. L’utilisation du composant est simple, quelques clics
suffisent à intégrer une base externe à l’intérieur d’une base 4D v11 SQL.
4D v11 Assimilator est un composant 4D v11 SQL qui permet au développeur 4D de cloner les tables et de
synchroniser les données de toute une série de bases de données SQL externes dans une base de données 4D,
qu’elle soit existante ou à créer.
4D Notes techniques
Copyright © 1985-2009 4D SAS - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D
SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence
électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés
ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par
photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que
l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple
Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial
Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
1 / 36
4D v11 SQL Assimilator
Introduction
4D v11 Assimilator est un composant 4D v11 SQL qui permet au développeur 4D de cloner les tables et de
synchroniser les données de toute une rie de bases de données SQL externes dans une base de données 4D
qu'elle soit existante ou à créer. Tout comme les versions antérieures, cette version de Assimilator est conçu
pour permettre au développeur de recréer facilement la structure d'une base de données et d'en récupérer les
données.
Sans avoir besoin de coder dans la base hôte, le composant Assimilator importera tables et données de SQL
Server 2000, MySQL 5, Microsoft Access et autres bases 4D v11 SQL.
Dans le cas de 4D v11 SQL Server, le composant Assimilator communique directement sans recourir à un
driver ODBC. Dans les autres cas, incluant les bases 4D monoposte, il faudra vous procurer le driver ODBC
adéquat.
En l'état actuel, le composant Assimilator ne prend en charge qu'un nombre limité de bases de données
tierces (4D, MySql, Ms SQL Server). La manière d'extraire les définitions de structure des différents
vendeurs est la même, seules les conventions de nommage des tables systèmes changent ; les développeurs
peuvent facilement intégrer le code nécessaire au traitement de bases SQL non incluses dans la présente
version.
Le composant 4D v11 SQL Assimilator
Les anciennes versions de 4D Assimilator utilisaient le plugin 4D ODBC ou le plugin 4D ODBC Pro. Avec
4D v11 SQL, Assimilator n'utilise plus ces plugins mais passe directement par des commandes SQL natives.
Cependant, l'utilisation de pilotes ODBC reste nécessaire : 4D v11 SQL reste dépendant du DSN (Data
Source Name) pour communiquer avec toutes les bases externes à l'exception de 4D v11 SQL Server. En
effet toutes les communications vers des bases externes, y compris 4D Stand-Alone, passent par les couches
de communication d'ODBC.
Le grand intérêt du composant Assimilator est sa souplesse qui autorise des tests rapides avant mise en
œuvre finale. Créez une base de données 4D hôte, testez, affinez, puis déplacez le composant vers votre
application finale et assimilez. Assimilator n'ajoute pas de nouvelles méthodes à la base hôte et quand le
travail de clonage est terminé vous pouvez retirer le composant de la base.
Avant de commencer
Voici ce dont vous aurez besoin pour :
Assimiler une base de données SQL d'un vendeur " externe "
Le pilote ODBC adéquat
Un utilisateur ou un DSN vers la base externe
Un Identifiant et mot de passe pour accéder à la base
Les droits minimaux pour accéder au système de tables de la base à cloner
Assimiler un fichier de données 4D antérieur à la v11
Le traitement d'une base 4D qui n'a pas été converti vers 4D v11 SQL dépend de la plateforme sur laquelle
tourne votre base hôte.
Windows
Le pilote 4D ODBC pour 4D Server doit obligatoirement être installé
Un utilisateur ou un DSN utilisant le pilote 4D ODBC
Un Identifiant et mot de passe
Macintosh
Un pilote ODBC tiers
Un utilisateur ou un DSN utilisant le driver 4D ODBC
Un Identifiant et mot de passe
Assimiler une base de données 4D v11 SQL
Les outils nécessaires pour assimiler une base de données v11 dépendent du type de moteur qu'elle utilise.
Assimiler une base tournant sur 4D v11 SQL Server ne demande presque rien car tout se passe en direct,
sans recours aux couches ODBC. Cependant vous restez libre de passer par ODBC.
Le schéma ci-dessous décrit les canaux de communication SQL :
Assimiler une base v11 SQL Server sans ODBC
Un nom d'utilisateur et un mot de passe
Un nom de publication sur le réseau ou l'adresse IP du serveur
Le port écouté par le serveur si différent du port par défaut (19182)
Assimiler une base v11 SQL monoposte ou Server avec ODBC
3 / 36
Le driver ODBC 4D v11 SQL fourni par 4D
Un utilisateur ou un DSN utilisant le driver 4D ODBC
Un utilisateur et un mot de passe pour l'application
Les droits d'accès minimum pour accéder aux tables système
Avertissements
Certaines bases de données autorisent l'utilisation de caractères spéciaux dans le nom des tables et des
colonnes ; 4D v11 SQL en fait partie. Cependant lors de l'importation des données directement dans des
champs, ces caractères spéciaux peuvent perturber le bon fonctionnement du moteur SQL de 4D. Voici une
liste non exhaustive de ces caractères :
/ \ | ~ # % ^ & * ( ) - + = ' “ ”
Si vous assimilez une base de données utilisant un ou plusieurs de ces caractères dans les noms de tables ou
de colonnes, il faudra renommer ces tables ou ces colonnes dans votre structure 4D afin d'éliminer ces
caractères spéciaux.
Certains types de données ne sont pas totalement transposables dans une base 4D. Par exemple on retrouve
dans des bases MySQL des champs de type " ENUM " qui pourraient être comparés à un champ 4D qui
accepterait des valeurs d'une liste 4D. Ces champs peuvent contenir toute une variété de données : des
alphanumériques, des numériques, des booléens, etc. Lors de l'assimilation, leur taille sera adaptée à l'item le
plus grand.
Par défaut Assimilator transpose le type ENUM en un alphanumérique de la longueur paramétrée dans la
colonne character_maximum_length de la table INFORMATION_SCHEMA COLUMNS (Dans MySQL, la
table COLUMNS fournit des informations sur les colonnes dans les tables.)
Nouveautés de la version 4D v11 SQL Assimilator
Tel que mentionné plus haut, 4D v11 SQL Assimilator n'utilise plus que les commandes SQL 4D natives,
alors que dans les versions précédentes tout transitait par le protocole ODBC.
Utiliser les commandes natives met en lumière la difficulté que représente la lecture des tables systèmes de
chacun des vendeurs de solutions tierces. En relevant ce défi, 4D v11 SQL Assimilator met en avant la
puissance et la souplesse du langage SQL natif de 4D et peut être utilisé aussi bien comme un outil de
productivité qu'un outil de formation.
Le fonctionnement de 4D v11 SQL Assimilator
Dans le composant Assimilator, une seule méthode est partagée avec sa base hôte. Cette méthode est
ASS_OpenConnection.Les autres méthodes sont privées et préfixées selon leurs usages. Tout ce qui
concerne le travail d'assimilation est préfixé ASS_. Les autres méthodes ne seront pas décrites dans cette
note car sans intérêt pour la bonne compréhension du composant. Voyons les méthodes qui sont mises en
œuvre pour exploiter le langage SQL de 4D.
ASS_OpenConnection
Dans la méthode ASS_OpenConnection, Assimilator crée un nouveau process et appelle
Ass_Init_ProcVars qui déclare toutes les variables process utilisées par le composant. Ensuite la
méthode ouvre le dialogue " Connection_d " qui présente tous les choix et champs requis pour ouvrir
une connexion vers la base de données à cloner.
Si l'utilisateur choisit de se connecter à une base externe, on exécute une des méthodes de la série
Ass_GetTableList_xxx. On trouvera dans ces méthodes la commande SELECT propre à chaque
système de tables de chaque vendeur.
Enfin la méthode ASS_OpenAssimilator est appelée afin de présenter les outils nécessaires au clonage
de la base externe vers la base hôte.
La méthode suivante est appelée depuis le dialogue de connexion :
ASS_GetDataSourceList
La méthode ASS_GetDataSourceList récupère la liste des Data Source Name (DSN) du système et de
l'utilisateur. Dans le cas de serveurs qui gèrent plusieurs bases de données en même temps, il incombe
au développeur de configurer le nom du DSN de telle sorte que Assimilator puisse identifier la base à
assimiler. Actuellement ASS_GetDataSourceList est codée pour parser (analyser) les noms de DSN
renvoyés par la commande LISTE SOURCES DONNEES qui utilise " : " comme séparateur de
données entre le nom du DSN et le nom de la base de données, < DSN Titre > : < Base nom >.
LISTE SOURCES DONNEES(Source de données Système ;$SystemDSN_aT;$SystemDrvr_aT)
$SOA:=Taille tableau($SystemDSN_aT)
LISTE SOURCES DONNEES(Source de données utilisateur ;$UserDSN_aT;$UserDrvr_aT)
$RIS:=Taille tableau($UserDSN_aT)
TABLEAU TEXTE(DSName_aT;$SOA+$RIS)
TABLEAU TEXTE(DSDriver_aT;$SOA+$RIS)
TABLEAU TEXTE(DSDBases_aT;$SOA+$RIS)
Si ($SOA>0)
Boucle ($Ndx;1;$SOA)
DSName_aT{$Ndx}:=$SystemDSN_aT{$Ndx}
DSDriver_aT{$Ndx}:=$SystemDrvr_aT{$Ndx}
Si (Position(":";$SystemDSN_aT{$Ndx})>0)
DSDBases_aT{$Ndx}:=Sous chaine($SystemDSN_aT{$Ndx};
Position(":";$SystemDSN_aT{$Ndx})+1)
Sinon
DSDBases_aT{$Ndx}:=""
Fin de si
Fin de boucle
Fin de si
Si ($RIS>0)
Boucle ($Ndx;1;$RIS)
DSName_aT{$Ndx+$SOA}:=$UserDSN_aT{$Ndx}
DSDriver_aT{$Ndx+$SOA}:=$UserDrvr_aT{$Ndx}
Si (Position(":";$UserDSN_aT{$Ndx})>0)
DSDBases_aT{$Ndx+$SOA}:=Sous chaine(($UserDSN_aT{$Ndx};
Position(":";$UserDSN_aT{$Ndx})+1)
Sinon
5 / 36
1 / 36 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !