1 -- Import complet des anciens
3 DROP TABLE IF EXISTS fusionax_anciens
;
5 CREATE TABLE IF NOT EXISTS fusionax_anciens (
6 AN
CHAR(2) NOT NULL COMMENT 'Vaut toujours AN pour cette table',
7 ax_id
VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
8 promotion_etude
SMALLINT(4) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études',
9 groupe_promo
CHAR(1) NOT NULL COMMENT '0, M ou D',
10 Nom_patronymique
VARCHAR(255) NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule',
11 partic_patro
VARCHAR(5) NOT NULL COMMENT 'Particule du nom patronymique',
12 prenom
VARCHAR(30) NOT NULL COMMENT 'Prénom',
13 Nom_usuel
VARCHAR(255) NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule',
14 partic_nom
VARCHAR(5) NOT NULL COMMENT 'Particule du nom usuel',
15 Nom_complet
VARCHAR(255) NOT NULL COMMENT 'Nom patronymique complet (avec la particule)',
16 Civilité
ENUM('M', 'MLLE', 'MME') NOT NULL DEFAULT 'M',
17 Code_nationalite
CHAR(4) NOT NULL COMMENT 'Nationalité (code)',
18 corps_sortie
VARCHAR(50) NOT NULL COMMENT 'Corps de sortie (ou D si aucun)',
19 Date_deces
DATE COMMENT 'Date de décès',
20 grade
VARCHAR(50) NOT NULL COMMENT 'Grade actuel dans son corps',
21 Mel_usage
VARCHAR(255) NOT NULL COMMENT 'Adresse e-mail d''usage',
22 Mel_publiable
TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail',
23 Mob_publiable
TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mobile',
24 tel_mobile
VARCHAR(30) NOT NULL COMMENT 'Numéro de téléphone mobile',
25 Date_maj
DATE NOT NULL COMMENT 'Date de mise à jour de ces informations',
26 pid
INT(11) UNSIGNED
DEFAULT NULL,
29 ) ENGINE
=InnoDB
, CHARSET
=utf8
;
31 LOAD DATA LOCAL INFILE
'{?}Anciens.txt' INTO TABLE `fusionax_anciens`
CHARACTER SET utf8 FIELDS TERMINATED
BY '\t' LINES TERMINATED
BY '\r\n'
32 (AN
, ax_id
, @
login, @
password, promotion_etude
, groupe_promo
, Nom_patronymique
, partic_patro
, prenom
, Nom_usuel
, partic_nom
,
33 Nom_complet
, Civilite
, Code_nationalite
, @
type, corps_sortie
, @StringDate_deces
, grade
, Mel_usage
, Mel_publiable
, @xxx
, Mob_publiable
,
34 tel_mobile
, @xxx
, @xxx
, @xxx
, @xxx
, @xxx
, @xxx
, @xxx
, @X_M_D
, @xxx
, @xxx
, @xxx
, @xxx
, @xxx
, @xxx
, @Type_adr
,
35 @Ligne1
, @Ligne2
, @Ligne3
, @code_postal
, @ville
, @zip_cedex
, @etat_distr
, @pays
, @tel
, @fax
, @StringDate_maj
)
37 Date_deces
= CONCAT(SUBSTRING(@StringDate_deces
,7),'-',SUBSTRING(@StringDate_deces
,4,2),'-',SUBSTRING(@StringDate_deces
,1,2)),
38 Date_maj
= CONCAT(SUBSTRING(@StringDate_maj
,7),'-',SUBSTRING(@StringDate_maj
,4,2),'-',SUBSTRING(@StringDate_maj
,1,2));
39 -- Mel_publiable is not certain yet :/
41 ALTER TABLE fusionax_anciens
ADD INDEX (ax_id
);
42 UPDATE fusionax_anciens
SET corps_sortie
= TRIM(corps_sortie
), grade
= TRIM(grade
);
43 UPDATE fusionax_anciens
SET groupe_promo
= 'X' WHERE groupe_promo
NOT IN ('M', 'D');
44 UPDATE fusionax_anciens
SET promotion_etude
= SUBSTRING(ax_id
, 1, 4) WHERE groupe_promo
!= 'X';
46 -- Correspondances entre fiches X.org et fiches AX
47 DROP TABLE IF EXISTS `fusionax_import`
;
49 CREATE TABLE IF NOT EXISTS `fusionax_import`
(
50 `ax_id`
VARCHAR(8) NOT NULL COMMENT 'identifiant AX de l''ancien',
51 `pid`
INT(11) DEFAULT NULL COMMENT 'identifiant du profil x.org de l''ancien si on l''a trouvé',
52 `date_match_id`
TIMESTAMP NULL DEFAULT NULL COMMENT 'date de mise en correspondance des identifiants',
53 PRIMARY KEY (`ax_id`
),
55 ) ENGINE
=InnoDB
, CHARSET
=utf8
;
57 INSERT INTO `fusionax_import`
( SELECT `ax_id`
, NULL, NULL FROM `fusionax_anciens`
);
58 REPLACE INTO `fusionax_import`
( SELECT `ax_id`
, `pid`
, NOW() FROM `profiles`
);
60 CREATE TEMPORARY TABLE IF NOT EXISTS tmp_update_fusionax_anciens (
61 good
CHAR(4) DEFAULT NULL,
62 bad
CHAR(4) DEFAULT NULL,
67 INSERT IGNORE INTO tmp_update_fusionax_anciens (bad
, good
)
83 UPDATE fusionax_anciens
AS f
84 INNER JOIN tmp_update_fusionax_anciens
AS t
ON (f.Code_nationalite
= t.bad
)
85 SET f.Code_nationalite
= t.good
;