1 |
# Ce Makefile effectue les substitutions de nom de base de données
|
1 |
# Ce Makefile effectue les substitutions de nom de base de données
|
2 |
# nécessaire au préalable de l'application des scripts SQL
|
2 |
# nécessaire au préalable de l'application des scripts SQL
|
3 |
|
3 |
|
4 |
# Cela est d'un part moins complexe:
|
4 |
# Cela est d'un part moins complexe:
|
5 |
# - qu'un script PHP (interpréteur, getopt, framework, ...)
|
5 |
# - qu'un script PHP (interpréteur, getopt, framework, ...)
|
6 |
# - qu'un shell-script (lancement avec make)
|
6 |
# - qu'un shell-script (lancement avec make)
|
7 |
# et d'autre part plus maintenable qu'un shell-script car
|
7 |
# et d'autre part plus maintenable qu'un shell-script car
|
8 |
# le versionnage des fichiers (inc ".current") permet certaines facilités.
|
8 |
# le versionnage des fichiers (inc ".current") permet certaines facilités.
|
9 |
|
9 |
|
10 |
|
10 |
|
11 |
# TODO:
|
11 |
# TODO:
|
12 |
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
|
12 |
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
|
13 |
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
|
13 |
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
|
14 |
# il est difficile de vouloir rester "simple".
|
14 |
# il est difficile de vouloir rester "simple".
|
15 |
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
|
15 |
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
|
16 |
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
|
16 |
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
|
17 |
# cf target "maj1" ci-dessous
|
17 |
# cf target "maj1" ci-dessous
|
18 |
|
18 |
|
19 |
|
19 |
|
20 |
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (juillet/août 2013)
|
20 |
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (juillet/août 2013)
|
21 |
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
|
21 |
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
|
22 |
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
|
22 |
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql \
|
- |
|
23 |
maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql \
|
- |
|
24 |
referonosaure.sql \
|
- |
|
25 |
.current
|
23 |
|
26 |
|
24 |
# la base de données à modifier
|
27 |
# la base de données à modifier
|
25 |
alterdb ?= tb_cel_test
|
28 |
alterdb ?= tb_cel_test
|
26 |
|
29 |
|
27 |
# pour bdtfxa, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
|
30 |
# pour bdtfxa, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
|
28 |
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
|
31 |
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
|
29 |
sourcedb ?= tb_eflore
|
32 |
sourcedb ?= tb_eflore
|
30 |
|
33 |
|
31 |
# pour annuaire_tela, lecture seule;
|
34 |
# pour annuaire_tela, lecture seule;
|
32 |
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
|
35 |
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
|
33 |
annuairedb ?= tela_prod_v4
|
36 |
annuairedb ?= tela_prod_v4
|
- |
|
37 |
|
- |
|
38 |
# macro utilisable pour les targets nécessitant de tester la présence d'un couple (base,table)
|
- |
|
39 |
# exemples:
|
- |
|
40 |
# * $(call is_table,tb_eflore,bdtfx_v1_01)
|
- |
|
41 |
# * $(call is_table,$(annuairedb),annuaire_tela)
|
- |
|
42 |
# argument 1: base de données
|
- |
|
43 |
# argument 2: table
|
- |
|
44 |
is_table = @$(shell mysql -N $(1) <<<"DESC $(2)" &> /dev/null && echo true || echo false)
|
34 |
|
45 |
|
35 |
|
46 |
|
36 |
# génère les fichiers avec les bases de données souhaitées
|
47 |
# génère les fichiers avec les bases de données souhaitées
|
37 |
compile: reset
|
48 |
compile: reset
|
38 |
@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g' \
|
49 |
@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g' \
|
39 |
-e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
|
50 |
-e 's/`BASEANNUAIRE`/`$(annuairedb)`/g' \
|
40 |
-e 's/`BASESOURCE`/`$(sourcedb)`/g' \
|
51 |
-e 's/`BASESOURCE`/`$(sourcedb)`/g' \
|
41 |
$(fichiers)
|
52 |
$(fichiers)
|
42 |
@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" \
|
53 |
@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" \
|
43 |
`grep ^BASEEDIT .current|cut -d '\`' -f2` \
|
54 |
`grep ^BASEEDIT .current|cut -d '\`' -f2` \
|
44 |
`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
|
55 |
`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
|
45 |
`grep ^BASESOURCE .current|cut -d '\`' -f2`
|
56 |
`grep ^BASESOURCE .current|cut -d '\`' -f2`
|
46 |
@read
|
57 |
@read
|
47 |
|
58 |
|
48 |
reset:
|
59 |
reset:
|
49 |
@svn revert $(fichiers) &> /dev/null
|
60 |
@svn revert $(fichiers) &> /dev/null
|
- |
|
61 |
|
50 |
|
62 |
|
51 |
help:
|
63 |
help:
|
52 |
@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>]"
|
64 |
@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>]"
|
53 |
|
65 |
|
54 |
|
66 |
|
55 |
# mise à jour de juillet/août 2013
|
67 |
# mise à jour de juillet/août 2013
|
56 |
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
|
68 |
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
|
57 |
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
|
69 |
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
|
58 |
# @echo 'cat cel_references.sql maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
|
70 |
# @echo 'cat cel_references.sql maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
|
59 |
@echo done
|
71 |
@echo done
|
60 |
|
72 |
|
61 |
|
73 |
|
62 |
|
74 |
|
63 |
cel_references:
|
75 |
cel_references:
|
64 |
#@mysqldump -dNq $(alterdb) cel_references 2>/dev/null|grep -q ^CREATE || mysql < cel_references.sql
|
76 |
$(call is_table,$(sourcedb),bdtfx_v1_01)
|
65 |
@mysql -N $(alterdb) <<<"DESC cel_references" 2>/dev/null|grep -q referentiel || mysql < cel_references.sql
|
77 |
$(call is_table,$(alterdb),cel_references) || mysql < cel_references.sql
|
66 |
|
78 |
|
- |
|
79 |
maj-struct-201307:
|
67 |
maj-struct-201307:
|
80 |
$(call is_table,$(annuairedb),annuaire_tela)
|
68 |
@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
|
81 |
@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
|
69 |
|
82 |
|
70 |
maj-cleanup-201307:
|
83 |
maj-cleanup-201307:
|
71 |
@ ! 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
|
84 |
@ ! 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
|
72 |
|
85 |
|
73 |
fix-utilisateur-32:
|
86 |
fix-utilisateur-32:
|
74 |
@mysql -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || mysql < fix-utilisateur-32.sql
|
87 |
@mysql -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || mysql < fix-utilisateur-32.sql
|
75 |
|
88 |
|
76 |
dedup-ordre-201307:
|
89 |
dedup-ordre-201307:
|
77 |
#@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
|
90 |
#@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
|
78 |
@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
|
91 |
@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
|
79 |
|
92 |
|
80 |
|
93 |
|
81 |
# pour une prochaine maj
|
94 |
# pour une prochaine maj
|
82 |
maj-nom-ret:
|
95 |
maj-nom-ret:
|
83 |
@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
|
96 |
@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
|