IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

script de liaison odbc [ODBC]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut script de liaison odbc
    Bonjour,

    Existe t'il à votre connaisance un script permettant de connecter par liaison dns ODCB une base mysql et une base interbase.
    Je m'explique à l'heure actuel la BDD interbase est lié par ODBC à acces et je doit migrer de SGBDR et donc connecter par ODBC mysql et interbase pour importer les tables.

    Quelqu'un peu t'il m'aider?

  2. #2
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut script ODBC
    Bonjour,

    J'ai adapté un script php permettant de me connecté à la base INTERBASE par DSN et de réccupérer les tables mais....problèmes sur l'insertion des nom des champs. Voici mon code est ce que quelqu'un peu me dire ce qui cloche sachant que quand j execute le script, dans le nom des champs de la table sous mysql j'ai ceci:RDB$547, RDB$548....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    <?php
    #######################################################
    #           SCRIPT DE CONVERSION DE BDD               #
    #               INTERBASE -> MYSQL                    #
    #             le 19/05/2008 par Gérald GAIGA                  #
     
    #######################################################
    #FONCTIONS
    function TypeChamp ($champ,$taille) {
        switch ($champ) {
         case 7:
         return array('SMALLINT',$taille);
         break;
         case 8:
         return array('INT',$taille);
         break;
         case 16:
         return array('BIGINT',$taille);
         break;
         case 10:
         return array('FLOAT','');
         break;
         case 11:
         //return 'D_Float';
         return 'erreur';
         break;
         case 27:
         return array('DOUBLE','');
         break;
         case 9:
         //return 'Quad';
         return 'erreur';
         break;
         case 14:
         return array('CHAR',$taille);
         break;
         case 37:
         return array('VARCHAR',$taille);
         break;
         case 40:
         //return 'CString';
         return 'erreur';
         break;
         case 13:
         return array('TIME','');
         break;
         case 12:
         return array('DATE','');
         break;
         case 35:
         return array('TIMESTAMP','');
         break;
         case 261:
         return array('BLOB','');
         break;
        }
    }
    #FIN FONCTIONS
    #PARAMETRES
    //C'est ici que vous devez entrer les paramètres de connexions aux BDD InterBase et MySQL
    //Assurez-vous d'avoir un serveur InterBase (ex: Firebird) et MySQL (ex: EasyPHP, WAMP) en activité.
    //PARAMETRES INTERBASE
     
      $hote = 'SIC'; //nom du dsn
      $utilisateur = 'SYSDBA'; //User par défaut
      $passe ='syscreas'; //Pass par défaut
      $bdd_interbase = odbc_connect($hote, $utilisateur, $passe, 'IscDbc'); //Connexion
    //PARAMETRES MYSQL
      $hote_mysql = 'localhost';
      $utilisateur_mysql = 'admin';
      $passe_mysql = '123456';
      $nom_mysql = 'test'; //Nom de la BDD MySQL
      $bdd_mysql = mysql_connect($hote_mysql,$utilisateur_mysql,$passe_mysql);
      mysql_select_db($nom_mysql,$bdd_mysql);
    #FIN PARAMETRES
    //ON PARCOURT LA BDD INTERBASE
      $requete = 'SELECT DISTINCT rdb$relation_name FROM rdb$relation_fields
    WHERE rdb$view_context IS NULL
      AND rdb$system_flag = 0'; //Injection de la requête permettant de récupérer les tables
      $resultat = odbc_do($bdd_interbase, $requete);
      while ($ligne = odbc_fetch_array($resultat)) {
        foreach ($ligne AS $table) {
        echo "<br><b>".$table."</b><br>";
        $req_struc_table = 'SELECT *
                            FROM rdb$relations rel
                              JOIN rdb$relation_fields rel_field
                                ON rel_field.rdb$relation_name = rel.rdb$relation_name
                              JOIN rdb$fields field
                                ON rel_field.rdb$field_source = field.rdb$field_name
                            WHERE rel.rdb$relation_name = \''.$table.'\'
                            ORDER BY rel_field.rdb$field_position, rel_field.rdb$field_name';
           $res_struc_table = odbc_do($bdd_interbase,$req_struc_table);
           //Construction de la requête de création de la table
           $req_create_table = "CREATE TABLE `".trim($table)."` (";
           while ($tab_struc_table = odbc_fetch_array($res_struc_table)) {
             $struct_champ = TypeChamp($tab_struc_table['RDB$FIELD_TYPE'],$tab_struc_table['RDB$FIELD_LENGTH']);
             if ($prem) {
                $req_create_table .= " , ";
             } else { $prem = 1; }
             $req_create_table .= "`".trim($tab_struc_table['RDB$FIELD_NAME'])."` ".$struct_champ[0];
             if ($struct_champ[1]) {
                $req_create_table .= "(".$struct_champ[1].")";
             }
             if ($tab_struc_table['RDB$NULL_FLAG'] == 0) {
                $req_create_table .= " NULL";
             } else {
                $req_create_table .= " NOT NULL";
             }
           }
           $req_create_table .= ") ENGINE = MYISAM";
           unset($prem);
           mysql_query($req_create_table) or die ("Impossible de créer la table : ".mysql_error()."<br>Requete : ".$req_create_table);
           //echo "<br>";
           odbc_free_result($res_struc_table);
           $requete2 = 'SELECT * FROM '.$table; //On récupère les champs de la table et leurs valeurs
           $resultat2 = odbc_do($bdd_interbase, $requete2);
           while ($ligne2 = odbc_fetch_array($resultat2)) {
              //Construction de la requête d'insertion des données
              $req_insert = "INSERT INTO `".trim($table)."` SET ";
              foreach ($ligne2 AS $champ => $valeur) {
                if ($prem) {
                   $req_insert .= " , ";
                } else { $prem = 1; }
                #Correction des valeurs texte
                $valeur = str_replace("\'","'",$valeur);
                $valeur = utf8_decode($valeur);
                $req_insert .= "`".$champ."`='".addslashes($valeur)."'";
              }
              unset($prem);
              mysql_query($req_insert) or die ("Insertion impossible : ".mysql_error()."<br>Requete : ".$req_insert);
              //echo "<br>";
           }
           odbc_free_result($resultat2);
        }
      }
      odbc_free_result($resultat);
      odbc_close($bdd_interbase);
    ?>
    je ne vois pas ce qui ne va pas help please

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/10/2008, 15h49
  2. liaison odbc mapinfo
    Par olam37 dans le forum 4D
    Réponses: 9
    Dernier message: 18/06/2008, 17h45
  3. [03] erreur liaison ODBC Access-Excel
    Par mirumoto dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2007, 13h09
  4. Liaison ODBC - base Access
    Par shinobi dans le forum Access
    Réponses: 6
    Dernier message: 09/03/2007, 08h58
  5. TQuery et liaison ODBC
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/08/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo