| 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 | 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, |
| 27 | PRIMARY KEY (ax_id), |
| 28 | INDEX (pid) |
| 29 | ) ENGINE=InnoDB, CHARSET=utf8; |
| 30 | |
| 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) |
| 36 | SET |
| 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 :/ |
| 40 | |
| 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'; |
| 45 | |
| 46 | -- Correspondances entre fiches X.org et fiches AX |
| 47 | DROP TABLE IF EXISTS `fusionax_import`; |
| 48 | |
| 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`), |
| 54 | KEY `pid` (`pid`) |
| 55 | ) ENGINE=InnoDB, CHARSET=utf8; |
| 56 | |
| 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` ); |
| 59 | |
| 60 | CREATE TEMPORARY TABLE IF NOT EXISTS tmp_update_fusionax_anciens ( |
| 61 | good CHAR(4) DEFAULT NULL, |
| 62 | bad CHAR(4) DEFAULT NULL, |
| 63 | PRIMARY KEY(bad), |
| 64 | UNIQUE KEY(good) |
| 65 | ) CHARSET=utf8; |
| 66 | |
| 67 | INSERT IGNORE INTO tmp_update_fusionax_anciens (bad, good) |
| 68 | VALUES ('TC', 'CAM'), |
| 69 | ('SH', 'CN'), |
| 70 | ('R', 'RO'), |
| 71 | ('TW', 'RC'), |
| 72 | ('TG', 'RT'), |
| 73 | ('U', 'ROU'), |
| 74 | ('KP', 'ROK'), |
| 75 | ('CRO', 'HR'), |
| 76 | ('UKR', 'UA'), |
| 77 | ('AM', 'ARM'), |
| 78 | ('CS', 'CZ'), |
| 79 | ('SU', 'RUS'), |
| 80 | ('LET', 'LV'), |
| 81 | ('MDA', 'MD'); |
| 82 | |
| 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; |