X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Ffusionax%2FAnciens.sql;h=5d647bf977708d3daf6099e36cf678f60c8d0c90;hb=4dcee20be6bd4ca928c54a6ae580f832b287777e;hp=4aa07de2d4e1a2efbd3ae83a12a375d633e0b8a4;hpb=652d69e72d90b1c104a6f74061900ca634b898a7;p=platal.git diff --git a/modules/fusionax/Anciens.sql b/modules/fusionax/Anciens.sql index 4aa07de..5d647bf 100644 --- a/modules/fusionax/Anciens.sql +++ b/modules/fusionax/Anciens.sql @@ -1,64 +1,85 @@ -- Import complet des anciens -DROP TABLE IF EXISTS `fusionax_anciens`; +DROP TABLE IF EXISTS fusionax_anciens; -CREATE TABLE IF NOT EXISTS `fusionax_anciens` ( - `AN` varbinary(2) NOT NULL COMMENT 'Vaut toujours AN pour cette table', - `id_ancien` varbinary(8) NOT NULL COMMENT 'Id unique de l''ancien', - `Login` varbinary(15) NOT NULL COMMENT 'Login sur le site de l''AX', - `Password` int(11) NOT NULL COMMENT 'Mot de passe sur le site AX', - `promotion_etude` int(11) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études', - `Groupe_promo` enum('','A','B','C','N','S') character set binary NOT NULL COMMENT 'Groupe de promotion (code compris seulement par AX)', - `Nom_patronymique` varchar(50) character set utf8 NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule', - `partic_patro` varchar(5) character set utf8 NOT NULL COMMENT 'Particule du nom patronymique', - `prenom` varchar(30) character set utf8 NOT NULL COMMENT 'Prénom', - `Nom_usuel` varchar(50) character set utf8 NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule', - `partic_nom` varchar(5) character set utf8 NOT NULL COMMENT 'Particule du nom usuel', - `Nom_complet` varchar(80) character set utf8 NOT NULL COMMENT 'Nom patronymique complet (avec la particule)', - `Civilite` enum('','.','M','MME','MLLE') character set utf8 NOT NULL COMMENT 'Civilité', - `Code_nationalite` varbinary(2) NOT NULL COMMENT 'Nationalité (code)', - `Type_membre` enum('','*','F','FB','P','PB','T','TB','TA') character set binary NOT NULL COMMENT 'Type de membre (code compris seulement par AX)', - `corps_sortie` varchar(10) character set utf8 NOT NULL COMMENT 'Corps de sortie (ou D si aucun)', - `Date_deces` DATE COMMENT 'Date de décès', - `grade` varbinary(20) NOT NULL COMMENT 'Grade actuel dans son corps', - `Mel_usage` varbinary(150) NOT NULL COMMENT 'Adresse e-mail d''usage', - `Mel_publiable` tinyint(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail', - `tel_mobile` varbinary(30) NOT NULL COMMENT 'Numéro de téléphone mobile', - `annee_dernCot` int(11) NOT NULL COMMENT 'Année de dernière cotisation AX', - `Representant` enum('','K','DE') character set binary NOT NULL COMMENT 'Représentant de promotion', - `hash_adr_defaut` binary(5) NOT NULL COMMENT 'Hash de l''adresse par défaut', - `Date_maj` DATE NOT NULL, - PRIMARY KEY (`id_ancien`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +CREATE TABLE IF NOT EXISTS fusionax_anciens ( + AN CHAR(2) NOT NULL COMMENT 'Vaut toujours AN pour cette table', + ax_id VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien', + promotion_etude SMALLINT(4) NOT NULL COMMENT 'Promotion avec laquelle il/elle a fait ses études', + groupe_promo CHAR(1) NOT NULL COMMENT '0, M ou D', + Nom_patronymique VARCHAR(255) NOT NULL COMMENT 'Nom patronymique (nom de jeune fille) sans la particule', + partic_patro VARCHAR(5) NOT NULL COMMENT 'Particule du nom patronymique', + prenom VARCHAR(30) NOT NULL COMMENT 'Prénom', + Nom_usuel VARCHAR(255) NOT NULL COMMENT 'Nom usuel (nom marital par exemple) sans la particule', + partic_nom VARCHAR(5) NOT NULL COMMENT 'Particule du nom usuel', + Nom_complet VARCHAR(255) NOT NULL COMMENT 'Nom patronymique complet (avec la particule)', + Civilite ENUM('M', 'MLLE', 'MME') NOT NULL DEFAULT 'M', + Code_nationalite CHAR(4) NOT NULL COMMENT 'Nationalité (code)', + corps_sortie VARCHAR(50) NOT NULL COMMENT 'Corps de sortie (ou D si aucun)', + Date_deces DATE COMMENT 'Date de décès', + grade VARCHAR(50) NOT NULL COMMENT 'Grade actuel dans son corps', + Mel_usage VARCHAR(255) NOT NULL COMMENT 'Adresse e-mail d''usage', + Mel_publiable TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mail', + Mob_publiable TINYINT(4) NOT NULL COMMENT 'Autorisation d''utiliser le mobile', + tel_mobile VARCHAR(30) NOT NULL COMMENT 'Numéro de téléphone mobile', + Date_maj DATE NOT NULL COMMENT 'Date de mise à jour de ces informations', + pid INT(11) UNSIGNED DEFAULT NULL, + PRIMARY KEY (ax_id), + INDEX (pid) +) ENGINE=InnoDB, CHARSET=utf8; -LOAD DATA LOCAL INFILE 'Anciens.txt' INTO TABLE `fusionax_anciens` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' -(`AN`, `id_ancien`, `Login`, `Password`, `promotion_etude`, `Groupe_promo`, `Nom_patronymique`, `partic_patro`, `prenom`, Nom_usuel, partic_nom, - Nom_complet, Civilite, Code_nationalite, Type_membre, corps_sortie, @StringDate_deces, grade, Mel_usage, Mel_publiable, - tel_mobile, annee_dernCot, Representant, @Type_adr_defaut, @AdrC_Ligne1, @AdrC_Ligne2, @AdrC_Ligne3, @AdrC_code_postal, @AdrC_ville, - @AdrC_zip_cedex, @AdrC_etat_distr, @AdrC_pays, @tel, @fax, @StringDate_maj) +LOAD DATA LOCAL INFILE '{?}Anciens.txt' INTO TABLE `fusionax_anciens` CHARACTER SET utf8 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' +(AN, ax_id, @login, @password, promotion_etude, groupe_promo, Nom_patronymique, partic_patro, prenom, Nom_usuel, partic_nom, + Nom_complet, Civilite, Code_nationalite, @type, corps_sortie, @StringDate_deces, grade, Mel_usage, Mel_publiable, @xxx, Mob_publiable, + tel_mobile, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @X_M_D, @xxx, @xxx, @xxx, @xxx, @xxx, @xxx, @Type_adr, + @Ligne1, @Ligne2, @Ligne3, @code_postal, @ville, @zip_cedex, @etat_distr, @pays, @tel, @fax, @StringDate_maj) SET - `hash_adr_defaut` = SUBSTRING( MD5( @Type_adr_defaut ), 1, 5), - `Date_maj` = CONCAT(SUBSTRING(@StringDate_maj,7),'-',SUBSTRING(@StringDate_maj,4,2),'-',SUBSTRING(@StringDate_maj,1,2)), - `Date_deces` = CONCAT(SUBSTRING(@StringDate_deces,7),'-',SUBSTRING(@StringDate_deces,4,2),'-',SUBSTRING(@StringDate_deces,1,2)); + Date_deces = CONCAT(SUBSTRING(@StringDate_deces,7),'-',SUBSTRING(@StringDate_deces,4,2),'-',SUBSTRING(@StringDate_deces,1,2)), + Date_maj = CONCAT(SUBSTRING(@StringDate_maj,7),'-',SUBSTRING(@StringDate_maj,4,2),'-',SUBSTRING(@StringDate_maj,1,2)); +-- Mel_publiable is not certain yet :/ + +ALTER TABLE fusionax_anciens ADD INDEX (ax_id); +UPDATE fusionax_anciens SET corps_sortie = TRIM(corps_sortie), grade = TRIM(grade); +UPDATE fusionax_anciens SET groupe_promo = 'X' WHERE groupe_promo NOT IN ('M', 'D'); +UPDATE fusionax_anciens SET promotion_etude = SUBSTRING(ax_id, 1, 4) WHERE groupe_promo != 'X'; -- Correspondances entre fiches X.org et fiches AX DROP TABLE IF EXISTS `fusionax_import`; - + CREATE TABLE IF NOT EXISTS `fusionax_import` ( - `id_ancien` binary(8) NOT NULL COMMENT 'identifiant AX de l''ancien', - `user_id` int(11) default NULL COMMENT 'identifiant x.org de l''ancien si on l''a trouvé', - `date_match_id` timestamp NULL default NULL COMMENT 'date de mise en correspondance des identifiants', - PRIMARY KEY (`id_ancien`), - KEY `user_id` (`user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `ax_id` VARCHAR(8) NOT NULL COMMENT 'identifiant AX de l''ancien', + `pid` INT(11) DEFAULT NULL COMMENT 'identifiant du profil x.org de l''ancien si on l''a trouvé', + `date_match_id` TIMESTAMP NULL DEFAULT NULL COMMENT 'date de mise en correspondance des identifiants', + PRIMARY KEY (`ax_id`), + KEY `pid` (`pid`) +) ENGINE=InnoDB, CHARSET=utf8; + +INSERT INTO `fusionax_import` ( SELECT `ax_id`, NULL, NULL FROM `fusionax_anciens` ); +REPLACE INTO `fusionax_import` ( SELECT `ax_id`, `pid`, NOW() FROM `profiles` ); -INSERT INTO `fusionax_import` ( SELECT `id_ancien`, NULL, NULL FROM `fusionax_anciens` ); -REPLACE INTO `fusionax_import` ( SELECT `matricule_ax`, `user_id`, NOW() FROM `auth_user_md5` ); +CREATE TEMPORARY TABLE IF NOT EXISTS tmp_update_fusionax_anciens ( + good CHAR(4) DEFAULT NULL, + bad CHAR(4) DEFAULT NULL, + PRIMARY KEY(bad), + UNIQUE KEY(good) +) CHARSET=utf8; -DROP VIEW IF EXISTS `fusionax_deceased`; +INSERT IGNORE INTO tmp_update_fusionax_anciens (bad, good) + VALUES ('TC', 'CAM'), + ('SH', 'CN'), + ('R', 'RO'), + ('TW', 'RC'), + ('TG', 'RT'), + ('U', 'ROU'), + ('KP', 'ROK'), + ('CRO', 'HR'), + ('UKR', 'UA'), + ('AM', 'ARM'), + ('CS', 'CZ'), + ('SU', 'RUS'), + ('LET', 'LV'), + ('MDA', 'MD'); -CREATE VIEW `fusionax_deceased` AS -SELECT u.user_id, a.id_ancien, u.nom, u.prenom, u.promo, u.deces AS deces_xorg, a.Date_deces AS deces_ax -FROM `auth_user_md5` AS u -INNER JOIN fusionax_anciens AS a ON ( a.id_ancien = u.matricule_ax ) -WHERE u.deces != a.Date_deces; + UPDATE fusionax_anciens AS f +INNER JOIN tmp_update_fusionax_anciens AS t ON (f.Code_nationalite = t.bad) + SET f.Code_nationalite = t.good;