New file |
0,0 → 1,93 |
<?php |
//declare(encoding='UTF-8'); |
/** |
* Exemple de lancement du script : : |
* /opt/lampp/bin/php cli.php cel -a chargerTous |
* |
* @category php 5.2 |
* @package eFlore/Scripts |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$ |
*/ |
class Tapirlink extends EfloreScript { |
|
public function executer() { |
try { |
$this->initialiserProjet('tapirlink'); |
|
// Lancement de l'action demandée |
$cmd = $this->getParametre('a'); |
switch ($cmd) { |
case 'chargerTous' : |
$this->chargerStructureSql(); |
$this->chargerTapirlink(); |
break; |
case 'supprimerTous' : |
$this->supprimerTous(); |
break; |
default : |
throw new Exception("Erreur : la commande '$cmd' n'existe pas!"); |
} |
} catch (Exception $e) { |
$this->traiterErreur($e->getMessage()); |
} |
} |
|
protected function initialiserProjet($projet) { |
$bases = $this->getListeBases(); |
parent::initialiserProjet($projet); |
$this->verifierPresenceBdd($bases); |
} |
|
private function getListeBases() { |
$requete = "SHOW DATABASES"; |
$bases = $this->getBdd()->recupererTous($requete); |
return $bases; |
} |
|
private function verifierPresenceBdd($bases) { |
$bddNom = Config::get('bdd_nom'); |
$existe = false; |
foreach ($bases as $base) { |
if ($base['Database'] == $bddNom) { |
$existe = true; |
break; |
} |
} |
if ($existe === false) { |
$message = "Veuillez créer la base de données '$bddNom'."; |
throw new Exception($message); |
} |
} |
|
private function chargerTapirlink() { |
$tablesCodes = array_keys(Config::get('tables')); |
foreach ($tablesCodes as $code) { |
echo "Chargement de la table : $code\n"; |
$this->chargerFichierTsvDansTable($code); |
} |
} |
|
private function chargerFichierTsvDansTable($code) { |
$chemin = Config::get('chemins.'.$code); |
$table = Config::get('tables.'.$code); |
$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 supprimerTous() { |
$requete = "DROP TABLE IF EXISTS raw_occurrence_record "; |
$this->getBdd()->requeter($requete); |
} |
} |
?> |