query("SELECT * FROM x_villes"); $villes = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "Nombre de villes à migrer: " . count($villes) . PHP_EOL; // Préparation de la requête d'insertion $insertQuery = "INSERT INTO x_villes ( id, fk_departement, libelle, code_postal, code_insee, chk_active ) VALUES ( :id, :fk_departement, :libelle, :code_postal, :code_insee, :chk_active ) ON DUPLICATE KEY UPDATE fk_departement = VALUES(fk_departement), libelle = VALUES(libelle), code_postal = VALUES(code_postal), code_insee = VALUES(code_insee), chk_active = VALUES(chk_active)"; $insertStmt = $targetDb->prepare($insertQuery); // Compteurs $successCount = 0; $errorCount = 0; // Traitement de chaque ville foreach ($villes as $ville) { try { // Mappage des champs $id = isset($ville['rowid']) ? $ville['rowid'] : $ville['id']; $chkActive = isset($ville['active']) ? $ville['active'] : (isset($ville['chk_active']) ? $ville['chk_active'] : 1); // Formatage du code postal (ajouter un 0 devant s'il ne contient que 4 chiffres) $codePostal = $ville['cp'] ?? ''; if (strlen($codePostal) === 4 && is_numeric($codePostal)) { $codePostal = '0' . $codePostal; } // Préparation des données pour l'insertion $villeData = [ 'id' => $id, 'fk_departement' => $ville['fk_departement'] ?? 1, 'libelle' => $ville['libelle'] ?? '', 'code_postal' => $codePostal, 'code_insee' => $ville['code_insee'] ?? '', 'chk_active' => $chkActive ]; // Insertion dans la base cible $insertStmt->execute($villeData); $successCount++; } catch (Exception $e) { $errorCount++; echo "Erreur lors de la migration de la ville 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); }