Reconnaissance des Datatypes par ODBC
Lors de la relecture d'une base de donnée, HOPEX demande à la base (Oracle dans notre exemple) quels sont ses datatypes, par l'intermédiaire d'ODBC.
Par exemple, si Oracle contient un datatype "SQL_LONGVARCHAR", HOPEX sait interpréter qu'il s'agit d'un datatype "P-Text".
Pour cela, HOPEX utilise le fichier "xmdb.xdr", situé dans le dossier "Mega\Mega_Std".
La partie du fichier "xmdb.xdr" qui concerne la orrespondance des datatypes commence par la ligne suivante :
<!-- Mapping of standard Datatypes -->
Chaque ligne se présente ainsi :
<!-- #DataType(5B845EAE3BAF0020) = "SQL_LONGVARCHAR"
Standard::Types::Pivot::P-Text -->
• Le chiffre entre parenthèses (ici 5B845EAE3BAF0020) est l'identifiant absolu du datatype.
• Le texte entre guillemets (ici SQL_LONGVARCHAR) est le nom du datatype ODBC.
• Le chemin qui suit (ici Standard::Types::Pivot::) précise dans quel paquetage HOPEX se trouve le datatype correspondant.
• Enfin, le datatype HOPEX (ici P-Text) est précisé.
Pour reconnaître les datatypes, l'outil utilise, dans l'ordre, les listes suivantes :
• La liste des datatypes ajoutés par l'utilisateur.
Lorsque vous créez manuellement un datatype, il faut ajouter une règle à la liste pour que celui-ci soit reconnu.
• La liste des datatypes du driver ODBC utilisé.
Exemple: ici il existe une liste de datatypes pour Ingres et deux listes pour Oracle, pour deux drivers différents (driver Oracle et driver Microsoft)
<!-- Declaration Rule Parser Datatypes for Ingres -->
<!-- #DataType(13ED147938B5008F) = "SQL_CHAR,SQL_INGRESC" Standard::Types::Pivot::P-Character -->
<!-- #DataType(5B845EAE3BAF0020) = "SQL_VARCHAR,SQL_INGRESTEXT" Standard::Types::Pivot::P-Text -->
<!-- #DataType(13ED1A3D38B501E0) = "SQL_DECIMAL,SQL_INGRESMONEY" Standard::Types::Pivot::P-Currency -->
<!-- #DataType(13ED1A3038B501D5) = "SQL_TIMESTAMP,SQL_INGRESDATE" Standard::Types::Pivot::P-Date -->
<!-- Declaration Rule Parser Datatypes for Oracle with Oracle Driver -->
<!-- #DataType(B55EB70C3471008F) = "SQL_TIMESTAMP,SQL_Oracle8DATE" Standard::Types::Pivot::P-Datetime -->
<!-- #DataType(45F44A3B3BAF003D) = "SQL_VARBINARY,SQL_Oracle8RAW" Standard::Types::Pivot::P-Binary -->
<!-- #DataType(B55EB71E347100BC) = "SQL_VARCHAR,SQL_Oracle8ROWID" Standard::Types::Pivot::P-Timestamp -->
<!-- #DataType(B55EB6F134710044) = "SQL_DECIMAL,SQL_Oracle8DECIMAL" Standard::Types::Pivot::P-Numeric -->
<!-- #DataType(B55EB6F134710044) = "SQL_TINYINT,SQL_Oracle8NUMBER(3,0)" Standard::Types::Pivot::P-Numeric -->
<!-- #DataType(B55EB6F134710044) = "SQL_INTEGER,SQL_Oracle8DECIMAL" Standard::Types::Pivot::P-Numeric -->
<!-- Declaration Rule Parser Datatypes for Oracle with Microsoft Driver -->
<!-- #DataType(B55EB70C3471008F) = "SQL_TIMESTAMP,SQL_OracleDATE" Standard::Types::Pivot::P-Datetime -->
<!-- #DataType(45F44A3B3BAF003D) = "SQL_VARBINARY,SQL_OracleRAW" Standard::Types::Pivot::P-Binary -->
<!-- #DataType(B55EB71E347100BC) = "SQL_CHAR,SQL_OracleROWID" Standard::Types::Pivot::P-Timestamp -->
<!-- #DataType(B55EB6F134710044) = "SQL_DECIMAL,SQL_OracleNUMBER" Standard::Types::Pivot::P-Numeric -->
• La liste des datatypes standard.
Problèmes de reconnaissance des datatypes
Il est nécessaire d'ajouter une correspondance entre les datatypes dans le fichier "xmdb.xdr" dans les deux cas suivants :
• Le datatype est mal reconnu.
Vous pouvez vous en rendre compte en constatant par exemple qu'un datatype "Integer" dans Oracle devient un datatype "P-Number" dans HOPEX, au lieu de "P-Integer".
• Le datatype n'est pas reconnu.
Lorsque le datatype n'est pas reconnu, un message de ce type apparaît en bas de la fenêtre lors de la relecture de la base cible :
"Le DataType 'SQL_Data8' n'a pas été reconnu. Voir l'aide pour configurer la correspondance des Datatypes".
Pour ajouter une correspondance de datatypes :
1. Ouvrez le fichier résultat de l'extraction.
2. Repérez dans ce fichier la correspondance entre les datatypes.
Par exemple, dans l'expression:
<COLDATATYPE
Name="COLDATATYPE.JAVA036HTTP036DEPLOYMENT036DIGEST036.IS09
5DOC095ROOT" DataType="SQL_DECIMAL"
le datatype ODBC est "SQL_DECIMAL" et le datatype HOPEX est "SQL_Oracle8DECIMAL".
3. Ajoutez à n'importe quel endroit dans le fichier "xmdb.xdr" une ligne construite comme ci-dessus indiquant la correspondance entre les datatypes.
Exemple :
<!-- #DataType(B55EB6F134710044) = "SQL_Data8"
Standard::Types::Pivot::P-Text -->
Ici, nous avons défini le datatype "SQL_Data8" comme un datatype "P-Text".