Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 820 → Rev 821

/trunk/scripts/modules/cel/maj-nom-ret.sql
9,7 → 9,7
CREATE INDEX i_nom_ret ON bdtfx_v1_01 (`nom_sci`(8))
2) regarder les num_nom_ret orphelins de taxon en BDTFX:
SELECT * FROM bdtfx_v1_01 WHERE num_nom_retenu = 0; # 3960
3) regarder les num_nom_ret orphelins de taxon en BDTFX:
3) regarder les num_nom_ret orphelins de taxon en BDTXA:
SELECT * FROM bdtxa_v1_00 WHERE num_nom_retenu = 0; # 0
4) regarder les orphelins équivalents dans `BASEEDIT`.`cel_obs`:
SELECT date_observation, SUBSTRING(nom_sel, 1, 50), nom_ret_nn, nom_ret, b.nom_sci FROM `BASEEDIT`.`cel_obs` c LEFT JOIN `BASESOURCE`.`bdtfx_v1_01` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0; # 7740
/trunk/scripts/modules/cel/Makefile
1,5 → 1,25
# Ce Makefile effectue les substitutions de nom de base de données
# nécessaire au préalable de l'application des scripts SQL
 
# Cela est d'un part moins complexe:
# - qu'un script PHP (interpréteur, getopt, framework, ...)
# - qu'un shell-script (lancement avec make)
# et d'autre part plus maintenable qu'un shell-script car
# le versionnage des fichiers (inc ".current") permet certaines facilités.
 
 
# TODO:
# 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
 
 
# from:
# 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-hash-id-obs-migr.sql maj-nom-ret.sql maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql referonosaure.sql .current
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
 
# la base de données à modifier
alterdb ?= tb_cel_test
13,12 → 33,13
annuairedb ?= tela_prod_v4
 
all:
sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g' \
@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"
 
reset:
svn revert $(fichiers)
28,3 → 49,15
 
maj1:
@echo 'cat maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
 
 
cel_references:
@mysqldump -dNq $(alterdb) cel_references 2>/dev/null|grep -q ^CREATE
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
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