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 Login VARCHAR(15) NOT NULL COMMENT 'Login sur le site de l''AX',
9 Password INT(11) NOT NULL COMMENT 'Mot de passe sur le site AX',
10 promotion_etude
SMALLINT(4) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études',
11 Groupe_promo
ENUM('', 'A', 'B', 'C', 'N', 'S') character set binary NOT NULL COMMENT 'Groupe de promotion (code compris seulement par AX)',
12 Nom_patronymique
VARCHAR(255) NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule',
13 partic_patro
VARCHAR(5) NOT NULL COMMENT 'Particule du nom patronymique',
14 prenom
VARCHAR(30) NOT NULL COMMENT 'Prénom',
15 Nom_usuel
VARCHAR(255) NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule',
16 partic_nom
VARCHAR(5) NOT NULL COMMENT 'Particule du nom usuel',
17 Nom_complet
VARCHAR(255) NOT NULL COMMENT 'Nom patronymique complet (avec la particule)',
18 Civilite
ENUM('', '.', 'M', 'MME', 'MLLE') NOT NULL COMMENT 'Civilité',
19 Code_nationalite
CHAR(4) NOT NULL COMMENT 'Nationalité (code)',
20 Type_membre
ENUM('', '*', 'F', 'FB', 'P', 'PB', 'T', 'TB', 'TA') character set binary NOT NULL COMMENT 'Type de membre (code compris seulement par AX)',
21 corps_sortie
VARCHAR(50) NOT NULL COMMENT 'Corps de sortie (ou D si aucun)',
22 Date_deces
DATE COMMENT 'Date de décès',
23 grade
VARCHAR(50) NOT NULL COMMENT 'Grade actuel dans son corps',
24 Mel_usage
VARCHAR(255) NOT NULL COMMENT 'Adresse e-mail d''usage',
25 Mel_publiable
TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail',
26 tel_mobile
VARCHAR(30) NOT NULL COMMENT 'Numéro de téléphone mobile',
27 annee_dernCot
INT(11) NOT NULL COMMENT 'Année de dernière cotisation AX',
28 Representant
ENUM('', 'K', 'DE') character set binary NOT NULL COMMENT 'Représentant de promotion',
30 ) ENGINE
=InnoDB
, CHARSET
=utf8
;
32 LOAD DATA LOCAL INFILE
'{?}Anciens.txt' INTO TABLE `fusionax_anciens` FIELDS TERMINATED
BY '\t' LINES TERMINATED
BY '\r\n'
33 (`AN`
, `ax_id`
, `
Login`
, `
Password`
, `promotion_etude`
, `Groupe_promo`
, `Nom_patronymique`
, `partic_patro`
, `prenom`
, Nom_usuel
, partic_nom
,
34 Nom_complet
, Civilite
, Code_nationalite
, Type_membre
, corps_sortie
, @StringDate_deces
, grade
, Mel_usage
, Mel_publiable
,
35 tel_mobile
, annee_dernCot
, Representant
, @Type_adr_defaut
, @AdrC_Ligne1
, @AdrC_Ligne2
, @AdrC_Ligne3
, @AdrC_code_postal
, @AdrC_ville
,
36 @AdrC_zip_cedex
, @AdrC_etat_distr
, @AdrC_pays
, @tel
, @fax
, @StringDate_maj
)
38 `Date_deces`
= CONCAT(SUBSTRING(@StringDate_deces
,7),'-',SUBSTRING(@StringDate_deces
,4,2),'-',SUBSTRING(@StringDate_deces
,1,2));
40 ALTER TABLE fusionax_anciens
ADD INDEX (ax_id
);
42 -- Correspondances entre fiches X.org et fiches AX
43 DROP TABLE IF EXISTS `fusionax_import`
;
45 CREATE TABLE IF NOT EXISTS `fusionax_import`
(
46 `ax_id`
VARCHAR(8) NOT NULL COMMENT 'identifiant AX de l''ancien',
47 `pid`
INT(11) DEFAULT NULL COMMENT 'identifiant du profil x.org de l''ancien si on l''a trouvé',
48 `date_match_id`
TIMESTAMP NULL DEFAULT NULL COMMENT 'date de mise en correspondance des identifiants',
49 PRIMARY KEY (`ax_id`
),
51 ) ENGINE
=InnoDB
, CHARSET
=utf8
;
53 INSERT INTO `fusionax_import`
( SELECT `ax_id`
, NULL, NULL FROM `fusionax_anciens`
);
54 REPLACE INTO `fusionax_import`
( SELECT `ax_id`
, `pid`
, NOW() FROM `profiles`
);
56 CREATE TEMPORARY TABLE IF NOT EXISTS tmp_update_fusionax_anciens (
57 good
CHAR(4) DEFAULT NULL,
58 bad
CHAR(4) DEFAULT NULL,
63 INSERT IGNORE INTO tmp_update_fusionax_anciens (bad
, good
)
79 UPDATE fusionax_anciens
AS f
80 INNER JOIN tmp_update_fusionax_anciens
AS t
ON (f.Code_nationalite
= t.bad
)
81 SET f.Code_nationalite
= t.good
;