New file |
0,0 → 1,114 |
<?php |
/** Exemple lancement: |
* /opt/lampp/bin/php -d memory_limit=3500M cli.php sptb -a chargerTous |
*/ |
class ListeRouge extends EfloreScript { |
|
public function executer() { |
// Lancement de l'action demandée |
try { |
$this->initialiserProjet('liste_rouge'); |
|
$cmd = $this->getParametre('a'); |
switch ($cmd) { |
case 'chargerTous' : |
$this->chargerStructureSql(); |
$this->chargerDonnees(); |
$this->genererChampNumNomRetenu(); |
break; |
case 'chargerStructureSql' : |
$this->chargerStructureSql(); |
break; |
case 'chargerDonnees' : |
$this->chargerDonnees(); |
$this->genererChampNumNomRetenu(); |
break; |
case 'genererChampNumNomRetenu' : |
$this->genererChampNumNomRetenu(); |
break; |
case 'ajouterChampNumNomRetenu' : |
$this->ajouterChampNumNomRetenu(); |
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 = Config::get('chemins.listeRouge'); |
$table = Config::get('tables.listeRouge'); |
$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 genererChampNumNomRetenu() { |
$this->preparerTablePrChpNumNomRetenu(); |
$this->genererNumNomRetenu(); |
$this->recupererNumNomNonTrouve(); |
} |
|
private function preparerTablePrChpNumNomRetenu() { |
$table = Config::get('tables.listeRouge'); |
$requete = "SHOW COLUMNS FROM $table LIKE 'num_nom_retenu' "; |
$resultat = $this->getBdd()->recuperer($requete); |
if ($resultat === false) { |
$requete = "ALTER TABLE $table ". |
' ADD `num_nom_retenu` VARCHAR( 10 ) NOT NULL ,'. |
' ADD `nom_sci` VARCHAR( 500 ) NOT NULL ,'. |
' ADD INDEX ( `num_nom_retenu` ) '; |
$this->getBdd()->requeter($requete); |
} |
} |
|
private function genererNumNomRetenu() { |
$table = Config::get('tables.listeRouge'); |
$table_referentiel = Config::get('tables.referentielTaxo'); |
|
$requete = 'UPDATE '.$table.' s, '.$table_referentiel.' r '. |
'SET s.num_nom_retenu = r.num_nom_retenu, s.nom_sci = r.nom_complet '. |
'WHERE s.nom_sci_orig = r.nom_complet '; |
|
$this->getBdd()->requeter($requete); |
} |
|
private function recupererNumNomNonTrouve() { |
$table = Config::get('tables.listeRouge'); |
$requete = 'SELECT `id`, `nom_sci_orig`'. |
' FROM '.$table. |
' WHERE `num_nom_retenu` = ""'; |
|
$noms = $this->getBdd()->recupererTous($requete); |
$debug = "Noms sans correspondance avec bdtfx :\n"; |
foreach ($noms as $nom) { |
$debug .= $nom['id']." ".$nom['nom_sci_orig']."\n"; |
} |
Debug::printr($debug); |
} |
|
private function ajouterChampNumNomRetenu() { |
$chemin = Config::get('chemins.listeRougeCorresp'); |
$table = Config::get('tables.listeRouge'); |
$requetes = $this->recupererContenu($chemin); |
$this->executerScripSql($requetes); |
} |
|
private function supprimerTous() { |
$requete = "DROP TABLE IF EXISTS liste_rouge_meta, liste_rouge_v2012"; |
$this->getBdd()->requeter($requete); |
Debug::printr('suppression'); |
} |
} |
?> |