bonjour j'ai un script qui doit m'importer 140 tables de INTERBASE vers mysql, tout fonctionne bien sauf une fois arrivé à la 72eme tables voici mon code et le message d'erreur en question
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
 
<?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
  mysql_query('DROP DATABASE test');
 mysql_query( "CREATE DATABASE test");
 
  $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 and rdb$relation_name <> \'REUNION\'and rdb$relation_name <> \'STATUT_ACTEUR\'and rdb$relation_name <> \'SOCIETE\'and rdb$relation_name <> \'SUITHABILITATION\'and rdb$relation_name <> \'TASKS\'and rdb$relation_name <> \'STOCKAGE\'and rdb$relation_name <> \'TAUXDEPANNE\'and rdb$relation_name <> \'TAUX\'and rdb$relation_name <> \'TACHE\'and rdb$relation_name <> \'TASKSPREDECESSORS\'and rdb$relation_name <> \'TASKSRESOURCES\'and rdb$relation_name <> \'TPM\'and rdb$relation_name <> \'TREMPLIN_MARCHE\'and rdb$relation_name <> \'TREMPLIN_SOCIETE\'and rdb$relation_name <> \'TYPEAT\'and rdb$relation_name <> \'TYPEBARRE\'and rdb$relation_name <> \'TYPEDEPENSE\'and rdb$relation_name <> \'TYPEEMPL\'and rdb$relation_name <> \'TYPEEPROUVETTE\'and rdb$relation_name <> \'TYPELOPIN\'and rdb$relation_name <> \'TYPEMETAL\'and rdb$relation_name <> \'TYPEPIECE\'and rdb$relation_name <> \'TYPEPOUDRE\'and rdb$relation_name <> \'TYPE_PROJET\'and rdb$relation_name <> \'UTILISATEUR\''; //Injection de la requête permettant de récupérer les tables
  $resultat = odbc_do($bdd_interbase, $requete);
  //Récupérer le noms des champs
  //Initialisation
 
 $k=0;
 //Connection
$result = odbc_columns($bdd_interbase, $hote, "", "%");
 
 //Récupération du nom des colonnes
 while (odbc_fetch_row($result)) {
  $tablechamp[$k]= odbc_result($result,"COLUMN_NAME");
  $k++;
 
 }
 
 
 
 
 
  //Boucle
  $i= 0;
  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);
	   //initialisation
 
       //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; }
		 echo(var_dump($tablechamp[$i]));
         $req_create_table .= "`".trim($tablechamp[$i])."` ".$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";
 
         }
		 $i++;
		}
 
 
       $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);
 
       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);
 
       }
       odbc_free_result($resultat2);
    }
  }
  odbc_free_result($resultat);
  odbc_close($bdd_interbase);
 
?>
ET le message qui est un var_dump:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
RECEPTIONCOLIS 
string(22) "RDB$CHARACTER_SET_NAME" string(15) "RDB$FORM_OF_USE" string(24) "RDB$NUMBER_OF_CHARACTERS" string(24) "RDB$DEFAULT_COLLATE_NAME" string(20) "RDB$CHARACTER_SET_ID" string(15) "RDB$SYSTEM_FLAG" string(15) "RDB$DESCRIPTION" string(17) "RDB$FUNCTION_NAME" Insertion impossible : Unknown column 'RCPT_ID' in 'field list'
Requete : INSERT INTO `RECEPTIONCOLIS` SET `RCPT_ID`='33' , `RCPT_DATEARRIVEE`='2006-07-05' , `RCPT_PROVENANCE`='28' , `RCPT_DESCRIPTIF`='re?commande 403/60338592 bandes abrasives' , `RCPT_DESTINATAIRE`='6000030' , `RCPT_LIEUSTOCKAGE`='14' , `RCPT_DATERECEPTION`='2006-07-07' , `RCPT_MAIL`='1'
Je ne comprend pas pourquoi a partir de cette table cela ne marche plus.