New file |
0,0 → 1,97 |
<?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); |
} |
} |
?> |