Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 821 → Rev 822

/trunk/scripts/modules/cel/A_LIRE.txt
5,26 → 5,29
2) à propos de la table cel_references
==============
 
0) maj-struct-201307.sql
1) cel_references.sql
création de la table `cel_references`
 
2) maj-struct-201307.sql
mise à jour des structure de table (les index notamment):
 
1) maj-cleanup-201307.sql
3) maj-cleanup-201307.sql
uniformisation des données (lon/lat, date, ...)
 
2) fix-utilisateur-32.sql
4) fix-utilisateur-32.sql
 
3) dedup-ordre-201307.sql
 
4) TODO: maj-nom-ret.sql
5) dedup-ordre-201307.sql
=====
6) TODO: maj-nom-ret.sql
TODO (pas sur) MAJ du référentiel pour les observation ayant un nom_ret_nn
 
5) maj-referentiel-201307.sql
7) maj-referentiel-201307.sql
MAJ du référentiel pour les observation ayant un nom_ret_nn
 
6) maj-referentiel-und-201307.sql
8) maj-referentiel-und-201307.sql
MAJ du référentiel pour les observation n'ayant pas de nom_ret_nn (tentative de détermination par nom)
 
7) referonosaure.sql
9) referonosaure.sql
MAJ des observations (valides) avec les nouvelles données générées, à partir de bdtfx/bdtxa
 
 
34,11 → 37,6
 
 
 
 
 
 
 
 
=== 2: À propos de la table cel_references ===
Celle-ci existe car:
* les projets doivent être indépendants (eflore, cel, projets nvjfl, ...)
47,7 → 45,7
 
La conséquence est que la construction d'une table dérivée de bdtfx/bdtxa contenant
les informations utiles pour CEL s'avère nécessaire.
cel_references.sh construit une telle table.
cel_references.sql construit une telle table.
 
Suivent quelques éléments de compréhension et exemples de requêtes liés à cette initialisation:
 
111,4 → 109,4
# 7 résultats
SELECT f.num_nomen, f.num_taxon, f.catminat_code, f.ve_lumiere, f.ve_temperature, f.ve_continentalite, f.ve_humidite_atmos, f.ve_humidite_edaph, f.ve_reaction_sol, f.ve_nutriments_sol, f.ve_salinite, f.ve_texture_sol, f.ve_mat_org_sol FROM baseflor_v2012_12_31 f LEFT JOIN baseveg_v2013_01_09 v ON (f.catminat_code = v.code_catminat AND v.niveau = 'ALL') WHERE f.BDNT = "BDTFX" and f.cle = 1174;
# 1 résultat
Nous utilisons v.niveau = ALL pour nous assurer la présence d'un seul f.num_nomen dans `T_basevegflor` et donc assurer l'unicité de la PRIMARY KET de `cel_references`
Nous utilisons v.niveau = ALL pour nous assurer la présence d'un seul f.num_nomen dans `T_basevegflor` et donc assurer l'unicité de la PRIMARY KEY de `cel_references`
/trunk/scripts/modules/cel/Makefile
12,12 → 12,12
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
# il est difficile de vouloir rester "simple".
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancer qu'après
# le succès de "maj1", celui-ci étant "testé" à l'aide d'un fichier comme .succeed ou .ok,
# cf: tentative de make check
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
# cf target "maj1" ci-dessous
 
 
# from:
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (juillet/août 2013)
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql referonosaure.sql .current
 
32,32 → 32,52
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
annuairedb ?= tela_prod_v4
 
all:
 
# génère les fichiers avec les bases de données souhaitées
compile: reset
@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g' \
-e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
-e 's/`BASESOURCE`/`$(sourcedb)`/g' \
$(fichiers)
@echo 'Attention: les changements sappliqueront sur la base:'
@grep ^BASEEDIT .current|cut -d '`' -f2
@echo "utilisez \"make reset\" si ce n'est pas l'opération escomptée"
@printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" , sources=\"%s\"\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
`grep ^BASEEDIT .current|cut -d '\`' -f2` \
`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
`grep ^BASESOURCE .current|cut -d '\`' -f2`
@read
 
reset:
svn revert $(fichiers)
@svn revert $(fichiers) &> /dev/null
 
help:
@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>]"
 
maj1:
@echo 'cat maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
 
# mise à jour de juillet/août 2013
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
# @echo 'cat cel_references.sql maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
@echo done
 
 
 
cel_references:
@mysqldump -dNq $(alterdb) cel_references 2>/dev/null|grep -q ^CREATE
#@mysqldump -dNq $(alterdb) cel_references 2>/dev/null|grep -q ^CREATE || mysql < cel_references.sql
@mysql -N $(alterdb) <<<"DESC cel_references" 2>/dev/null|grep -q referentiel || mysql < cel_references.sql
 
maj-struct-201307:
@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
 
maj-cleanup-201307:
@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE date_observation = '0000-00-00 00:00:00' LIMIT 1"|grep -q 1 || mysql < maj-cleanup-201307.sql
 
fix-utilisateur-32:
@mysql -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || mysql < fix-utilisateur-32.sql
 
dedup-ordre-201307:
@mysql -N $(alterdb)<<<"SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1;"|grep -q .
fix-utilisateur-32:
@mysql -N $(alterdb)<<<"DESC cel_obs ce_utilisateur"|grep -q 255
maj-cleanup-201307:
@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE date_observation = '0000-00-00 00:00:00' LIMIT 1"|grep -q 1
#@mysql -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || mysql < dedup-ordre-201307.sql
@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
 
 
# pour une prochaine maj
maj-nom-ret:
mysql -N<<<'SELECT count(1) FROM `$(alterdb)`.`cel_obs` c LEFT JOIN `$(sourcedb)`.`bdtfx_v1_01` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0 AND c.nom_ret != "" AND id_observation NOT IN ( SELECT id_observation FROM `$(alterdb)`.`cel_obs` c, `$(sourcedb)`.`bdtfx_v1_01` b WHERE c.nom_ret = b.nom_sci AND c.nom_ret_nn = 0 );'|grep -q 0
@mysql -N <<<'SELECT count(1) FROM `$(alterdb)`.`cel_obs` c LEFT JOIN `$(sourcedb)`.`bdtfx_v1_01` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0 AND c.nom_ret != "" AND id_observation NOT IN ( SELECT id_observation FROM `$(alterdb)`.`cel_obs` c, `$(sourcedb)`.`bdtfx_v1_01` b WHERE c.nom_ret = b.nom_sci AND c.nom_ret_nn = 0 );'|grep -q 0