Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 880 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/** Corriger les codes langues pays genre et nombre à la main
 * Exemple lancement:
 * /opt/lampp/bin/php -d memory_limit=3500M ~/web/eflore-projets/scripts/cli.php nva -a chargerTous
*/
class Nva extends EfloreScript {
        
        public function executer() {
                // Lancement de l'action demandée
                try {
                        $this->initialiserProjet('nva');

                        $cmd = $this->getParametre('a');
                    switch ($cmd) {
                        case 'chargerTous' :
                                $this->chargerStructureSql();
                                $this->chargerDonnees(Config::get('chemins.nva'), Config::get('tables.nva'));
                                $this->chargerDonnees(Config::get('chemins.index'), Config::get('tables.index'));
                                $this->ajouterChampNomVernaIndex();
                                $this->chargerDonnees(Config::get('chemins.ontologies'), Config::get('tables.ontologies'));
                                break;
                        case 'chargerStructureSql' :
                                $this->chargerStructureSql();
                                break;
                                case 'chargerDonnees' :
                                        $this->chargerDonnees();
                                        break;
                                case 'ajouterChampNomVernaIndex' :
                                        $this->ajouterChampNomVernaIndex();
                                        break;
                                case 'supprimerTous' :
                                        $this->supprimerTous();
                                        break;
                                default :
                                        throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
                        }
                } catch (Exception $e) {
                        $this->traiterErreur($e->getMessage());
                }
    }

        private function chargerDonnees($chemin, $table) {
                $requete = "LOAD DATA INFILE '$chemin' ".
                        "REPLACE INTO TABLE $table ".
                        'CHARACTER SET utf8 '.
                        'FIELDS '.
                        "       TERMINATED BY '\t' ".
                        "       ENCLOSED BY '' ".
                        "       ESCAPED BY '\\\' ".
                        'IGNORE 1 LINES';
                $this->getBdd()->requeter($requete);
        }
        
        private function ajouterChampNomVernaIndex() {
                $this->preparerTablePrChpNomVerna();
                $this->remplirChpNomVerna();
        }
        
        private function preparerTablePrChpNomVerna() {
                $table = Config::get('tables.index');
                $requete = "SHOW COLUMNS FROM $table LIKE 'nom_vernaculaire' ";
                $resultat = $this->getBdd()->recuperer($requete);
                if ($resultat === false) {
                        $requete =      "ALTER TABLE $table ".
                                        'ADD `nom_vernaculaire` VARCHAR( 40 ) NOT NULL ,
                                        ADD `code_langue` VARCHAR( 10 ) NOT NULL ,
                                        ADD `num_genre` INT( 1 ), ADD `num_nombre` INT( 1 ) ';
                        $this->getBdd()->requeter($requete);
                }
        }

        
        private function remplirChpNomVerna() {
                $table = Config::get('tables.index');
                $requete = "UPDATE `nva_index_v2_03` 
                        SET nom_vernaculaire=(select n.nom_vernaculaire from nva_v2_03 n where n.num_nom_vernaculaire=nva_index_v2_03.num_nom_vernaculaire), 
                        code_langue=(select n.code_langue from nva_v2_03 n where n.num_nom_vernaculaire=nva_index_v2_03.num_nom_vernaculaire), 
                        num_genre=(select n.num_genre from nva_v2_03 n where n.num_nom_vernaculaire=nva_index_v2_03.num_nom_vernaculaire),
                        num_nombre=(select n.num_nombre from nva_v2_03 n where n.num_nom_vernaculaire=nva_index_v2_03.num_nom_vernaculaire)";
                $resultat = $this->getBdd()->requeter($requete);
                if ($resultat === false) {
                        throw new Exception("Erreur d'update d'ajouts des noms");
                }
                $this->afficherAvancement("Ajout des noms vernaculaires à l'index");
                echo "\n";
        }
        



        private function supprimerTous() {
                $requete = "DROP TABLE IF EXISTS ".Config::get('tables.nva').", ".Config::get('tables.index').
                                        ", ".Config::get('tables.ontologies').", nva_meta ";
                $this->getBdd()->requeter($requete);
        }
}
?>