0501616b22d71875c77360bbf9ff5720620483eb
[platal.git] / modules / fusionax / Anciens.sql
1 -- Import complet des anciens
2
3 DROP TABLE IF EXISTS fusionax_anciens;
4
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 Code_nationalite CHAR(4) NOT NULL COMMENT 'Nationalité (code)',
17 corps_sortie VARCHAR(50) NOT NULL COMMENT 'Corps de sortie (ou D si aucun)',
18 Date_deces DATE COMMENT 'Date de décès',
19 grade VARCHAR(50) NOT NULL COMMENT 'Grade actuel dans son corps',
20 Mel_usage VARCHAR(255) NOT NULL COMMENT 'Adresse e-mail d''usage',
21 Mel_publiable TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail',
22 Mob_publiable TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mobile',
23 tel_mobile VARCHAR(30) NOT NULL COMMENT 'Numéro de téléphone mobile',
24 Date_maj DATE NOT NULL COMMENT 'Date de mise à jour de ces informations',
25 pid INT(11) UNSIGNED DEFAULT NULL,
26 PRIMARY KEY (ax_id),
27 INDEX (pid)
28 ) ENGINE=InnoDB, CHARSET=utf8;
29
30 LOAD DATA LOCAL INFILE '{?}Anciens.txt' INTO TABLE `fusionax_anciens` CHARACTER SET utf8 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'
31 (AN, ax_id, @login, @password, promotion_etude, groupe_promo, Nom_patronymique, partic_patro, prenom, Nom_usuel, partic_nom,
32 Nom_complet, @civilite, Code_nationalite, @type, corps_sortie, @StringDate_deces, grade, Mel_usage, Mel_publiable, @xxx, Mob_publiable,
33 tel_mobile, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @X_M_D, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @Type_adr,
34 @Ligne1, @Ligne2, @Ligne3, @code_postal, @ville, @zip_cedex, @etat_distr, @pays, @tel, @fax, @StringDate_maj)
35 SET
36 Date_deces = CONCAT(SUBSTRING(@StringDate_deces,7),'-',SUBSTRING(@StringDate_deces,4,2),'-',SUBSTRING(@StringDate_deces,1,2)),
37 Date_maj = CONCAT(SUBSTRING(@StringDate_maj,7),'-',SUBSTRING(@StringDate_maj,4,2),'-',SUBSTRING(@StringDate_maj,1,2));
38 -- Mel_publiable is not certain yet :/
39
40 ALTER TABLE fusionax_anciens ADD INDEX (ax_id);
41 UPDATE fusionax_anciens SET corps_sortie = TRIM(corps_sortie), grade = TRIM(grade);
42 UPDATE fusionax_anciens SET groupe_promo = 'X' WHERE groupe_promo NOT IN ('M', 'D');
43 UPDATE fusionax_anciens SET promotion_etude = SUBSTRING(ax_id, 1, 4) WHERE groupe_promo != 'X';
44
45 -- Correspondances entre fiches X.org et fiches AX
46 DROP TABLE IF EXISTS `fusionax_import`;
47
48 CREATE TABLE IF NOT EXISTS `fusionax_import` (
49 `ax_id` VARCHAR(8) NOT NULL COMMENT 'identifiant AX de l''ancien',
50 `pid` INT(11) DEFAULT NULL COMMENT 'identifiant du profil x.org de l''ancien si on l''a trouvé',
51 `date_match_id` TIMESTAMP NULL DEFAULT NULL COMMENT 'date de mise en correspondance des identifiants',
52 PRIMARY KEY (`ax_id`),
53 KEY `pid` (`pid`)
54 ) ENGINE=InnoDB, CHARSET=utf8;
55
56 INSERT INTO `fusionax_import` ( SELECT `ax_id`, NULL, NULL FROM `fusionax_anciens` );
57 REPLACE INTO `fusionax_import` ( SELECT `ax_id`, `pid`, NOW() FROM `profiles` );
58
59 CREATE TEMPORARY TABLE IF NOT EXISTS tmp_update_fusionax_anciens (
60 good CHAR(4) DEFAULT NULL,
61 bad CHAR(4) DEFAULT NULL,
62 PRIMARY KEY(bad),
63 UNIQUE KEY(good)
64 ) CHARSET=utf8;
65
66 INSERT IGNORE INTO tmp_update_fusionax_anciens (bad, good)
67 VALUES ('TC', 'CAM'),
68 ('SH', 'CN'),
69 ('R', 'RO'),
70 ('TW', 'RC'),
71 ('TG', 'RT'),
72 ('U', 'ROU'),
73 ('KP', 'ROK'),
74 ('CRO', 'HR'),
75 ('UKR', 'UA'),
76 ('AM', 'ARM'),
77 ('CS', 'CZ'),
78 ('SU', 'RUS'),
79 ('LET', 'LV'),
80 ('MDA', 'MD');
81
82 UPDATE fusionax_anciens AS f
83 INNER JOIN tmp_update_fusionax_anciens AS t ON (f.Code_nationalite = t.bad)
84 SET f.Code_nationalite = t.good;