query("SELECT * FROM x_regions"); $regions = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "Nombre de régions à migrer: " . count($regions) . PHP_EOL; // Préparation de la requête d'insertion $insertQuery = "INSERT INTO x_regions ( id, fk_pays, libelle, libelle_long, table_osm, departements, chk_active ) VALUES ( :id, :fk_pays, :libelle, :libelle_long, :table_osm, :departements, :chk_active ) ON DUPLICATE KEY UPDATE fk_pays = VALUES(fk_pays), libelle = VALUES(libelle), libelle_long = VALUES(libelle_long), table_osm = VALUES(table_osm), departements = VALUES(departements), chk_active = VALUES(chk_active)"; $insertStmt = $targetDb->prepare($insertQuery); // Compteurs $successCount = 0; $errorCount = 0; // Traitement de chaque région foreach ($regions as $region) { try { // Mappage des champs entre les deux structures $id = isset($region['rowid']) ? $region['rowid'] : $region['id']; $chkActive = isset($region['active']) ? $region['active'] : (isset($region['chk_active']) ? $region['chk_active'] : 1); // Préparation des données pour l'insertion $regionData = [ 'id' => $id, 'fk_pays' => $region['fk_pays'], 'libelle' => $region['libelle'], 'libelle_long' => $region['libelle_long'], 'table_osm' => $region['table_osm'], 'departements' => $region['departements'], 'chk_active' => $chkActive ]; // Insertion dans la base cible $insertStmt->execute($regionData); $successCount++; } catch (Exception $e) { $errorCount++; echo "Erreur lors de la migration de la région ID {$id}: " . $e->getMessage() . PHP_EOL; } } echo "Migration terminée. Succès: $successCount, Erreurs: $errorCount" . PHP_EOL; // Fermer le tunnel SSH closeSshTunnel(); } catch (Exception $e) { echo "Erreur critique: " . $e->getMessage() . PHP_EOL; // Fermer le tunnel SSH en cas d'erreur closeSshTunnel(); exit(1); }