Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

No changes between revisions

Ignore whitespace Rev 348 → Rev 1042

/tags/v5.6-arganeraie/scripts/modules/tapirlink/Tapirlink.php
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);
}
}
?>
/tags/v5.6-arganeraie/scripts/modules/tapirlink/A_LIRE.txt
New file
0,0 → 1,0
Créer une base de données tb_hit_indexation avant de lancer les scripts
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/tags/v5.6-arganeraie/scripts/modules/tapirlink/tapirlink.ini
New file
0,0 → 1,15
version="1_00"
dossierTsv = "{ref:dossierDonneesEflore}tapirlink/2012-01-30/"
dossierSql = "{ref:dossierTsv}"
bdd_nom = "tb_hit_indexation"
 
[tables]
enr = raw_occurrence_record
 
[fichiers]
structureSql = "raw_occurrence_record_v{ref:version}.sql"
enr = "{ref:tables.enr}.tsv"
 
[chemins]
structureSql = "{ref:dossierSql}{ref:fichiers.structureSql}"
enr = "{ref:dossierTsv}{ref:fichiers.enr}"