1,9 → 1,9 |
<?php |
/** Exemple lancement: |
* /opt/lampp/bin/php -d memory_limit=3500M cli.php sptba -a chargerTous |
* /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 { |
14,13 → 14,21 |
case 'chargerTous' : |
$this->chargerStructureSql(); |
$this->chargerDonnees(); |
$this->genererChampCodeLangue(); |
$this->genererChampNumTax(); |
break; |
case 'chargerStructureSql' : |
$this->chargerStructureSql(); |
break; |
case 'chargerDonnees' : |
$this->chargerDonnees(); |
$this->chargerDonnees(); |
break; |
case 'genererChampNumTax' : |
$this->genererChampNumTax(); |
break; |
case 'genererChampCodeLangue' : |
$this->genererChampCodeLangue(); |
break; |
case 'supprimerTous' : |
$this->supprimerTous(); |
break; |
33,7 → 41,7 |
} |
|
private function chargerDonnees() { |
$chemin = Config::get('chemins.nva').Config::get('fichiers.nva'); |
$chemin = Config::get('chemins.nva'); |
$table = Config::get('tables.nva'); |
$requete = "LOAD DATA INFILE '$chemin' ". |
"REPLACE INTO TABLE $table ". |
46,11 → 54,95 |
$this->getBdd()->requeter($requete); |
} |
|
private function genererChampNumTax() { |
$this->preparerTablePrChpNumTax(); |
$nns_taxons = $this->recupererTuplesPrNumTax(); |
$this->remplirChpNumTax($nns_taxons); |
} |
|
private function preparerTablePrChpNumTax() { |
$table = Config::get('tables.nva'); |
$requete = "SHOW COLUMNS FROM $table LIKE 'num_taxon' "; |
$resultat = $this->getBdd()->recuperer($requete); |
if ($resultat === false) { |
$requete = "ALTER TABLE $table ". |
'ADD num_taxon INT(10) '; |
$this->getBdd()->requeter($requete); |
} |
} |
|
private function recupererTuplesPrNumTax() { |
$table_ref = Config::get('tables.bdtxa'); |
$requete = 'SELECT num_tax, num_nom '. |
"FROM ".$table_ref." "; |
$resultat = $this->getBdd()->recupererTous($requete); |
return $resultat; |
} |
|
private function remplirChpNumTax($nns_taxons) { |
$table = Config::get('tables.nva'); |
foreach ($nns_taxons as $nn) { |
if (!empty($nn['num_tax']) && is_numeric($nn['num_tax'])) { |
$requete = "UPDATE $table SET num_taxon = ".$nn['num_tax']." WHERE num_nom = ".$nn['num_nom']." "; |
$resultat = $this->getBdd()->requeter($requete); |
} |
if ($resultat === false) { |
throw new Exception("Erreur d'insertion pour le tuple $id"); |
} |
$this->afficherAvancement("Insertion des nums taxonomiques dans la base en cours"); |
} |
echo "\n"; |
} |
|
private function genererChampCodeLangue() { |
$this->preparerTablePrChpCodeLangue(); |
$codes_langues = $this->recupererTuplesPrCodeLangue(); |
$this->remplirChpCodeLangue($codes_langues); |
} |
|
private function preparerTablePrChpCodeLangue() { |
$table = Config::get('tables.nva'); |
$requete = "SHOW COLUMNS FROM $table LIKE 'code_langue' "; |
$resultat = $this->getBdd()->recuperer($requete); |
if ($resultat === false) { |
$requete = "ALTER TABLE $table ". |
'ADD code_langue VARCHAR(3) '; |
$this->getBdd()->requeter($requete); |
} |
} |
|
private function recupererTuplesPrCodeLangue() { |
$codes_langues = array(); |
if (($handle = fopen(Config::get("dossierTsv")."codes_langues.csv", "r")) !== false) { |
while (($data = fgetcsv($handle, 1000, ",")) !== false) { |
$codes_langues[] = array('code_iso_639_3' => $data[0], |
'nom' => $data[1]); |
} |
fclose($handle); |
} |
|
return $codes_langues; |
} |
|
private function remplirChpCodeLangue($codes_langues) { |
$table = Config::get('tables.nva'); |
foreach ($codes_langues as $code) { |
if (!empty($code['nom'])) { |
$requete = "UPDATE $table SET code_langue = ".$this->getBdd()->proteger($code['code_iso_639_3'])." ". |
"WHERE TRIM(langue) = ".$this->getBdd()->proteger(trim($code['nom']))." "; |
$resultat = $this->getBdd()->requeter($requete); |
} |
if ($resultat === false) { |
throw new Exception("Erreur d'insertion pour le tuple $id"); |
} |
$this->afficherAvancement("Insertion des codes de langues dans la base en cours"); |
} |
echo "\n"; |
} |
|
private function supprimerTous() { |
$requete = "DROP TABLE IF EXISTS nva_meta, nva_v2013_06"; |
$requete = "DROP TABLE IF EXISTS ".Config::get('tables.nva').", nva_meta "; |
$this->getBdd()->requeter($requete); |
Debug::printr('suppression'); |
} |
} |
?> |