{"id":10303,"date":"2014-04-12T14:43:41","date_gmt":"2014-04-12T12:43:41","guid":{"rendered":"http:\/\/flaven.fr\/?p=10303"},"modified":"2026-09-16T10:08:58","modified_gmt":"2026-09-16T08:08:58","slug":"xpath-xml-bigdata-rationnaliser-ces-donnees-manipulation-du-xml-a-laide-simplexml","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2014\/04\/xpath-xml-bigdata-rationnaliser-ces-donnees-manipulation-du-xml-a-laide-simplexml\/","title":{"rendered":"XPath, XML, BigData &#8211; Rationnaliser ces donn\u00e9es, manipulation  du XML \u00e0 l&#8217;aide SimpleXML"},"content":{"rendered":"<p>  <!--  XPath, XML, BigData - Rationnaliser ces donn\u00e9es, manipulation  du XML \u00e0 l'aide SimpleXML --><br \/>\n  \t<!--  MySQL, XML, BigData, dette, donn\u00e9es, marketing, Xpath --><\/p>\n<p>Comme dans le pr\u00e9c\u00e8dent billet, un autre petit billet sur la recherche d&#8217;une solution rapide et peu co\u00fbteuse pour r\u00e9cup\u00e9rer des donn\u00e9es \u00e9parses afin de les consolider ult\u00e9rieurement dans une base de donn\u00e9es.<\/p>\n<p>En clair, la cible comme aime \u00e0 dire les consultants : c&#8217;est r\u00e9cup\u00e9rer de gros fichiers de donn\u00e9es notamment au format XML, donc passablement structur\u00e9es, les &#8220;d\u00e9couper&#8221;, les passer \u00e0 la moulinette de SimpleXML pour g\u00e9n\u00e9rer des queries  et injecter le tout dans une base de donn\u00e9es MySQL. Une base sur laquelle, vous pourrez requ\u00eater facilement, sortir de KPI, d\u00e9doublonner, corriger les corruptions de donn\u00e9es&#8230; Bref, transformer tel un docteur Frankenstein de la data, des donn\u00e9es mortes en donn\u00e9es vivantes et exploitables. <\/p>\n<p><b>Bien \u00e9videmment, il y a moyen d&#8217;industrialiser, automatiser ce type de manipulation mais volontairement on n&#8217;utilise que ce que des outils tr\u00e8s usuels. Certes, cela fait un &#8220;workflow&#8221; un peu chaotique mais qui permet de s\u00e9quentiellement voir chaque \u00e9tape<\/b><\/p>\n<p><i>Pour information, nous avons utiliser MAMP pour PHP et MySQL et la console MAC.<\/i><\/p>\n<h4>1. XML \u00e0 la D\u00e9coupe<\/h4>\n<p>Vous \u00eates souvent face \u00e0 des fichiers imposants en XML, vous aurez donc un s\u00e9rieux probl\u00e8me \u00e0 charger le fichier ou les fichiers <code>.xml<\/code>. Pour contrer, ce probl\u00e8me, vous pouvez indiquer dans votre fichier php que vous allez \u00e9tendre le param\u00e8tre <code>memory_limit<\/code><\/p>\n<p><b>Dans votre fichier  <code>php<\/code><\/b><\/p>\n<pre lang=\"PHP\">ini_set(\"memory_limit\",\"12M\");<\/pre>\n<p><b>Dans le <code>php.ini<\/code><\/b><\/p>\n<pre lang=\"PHP\">ini_set(\"memory_limit\",\"12M\");<\/pre>\n<p>Par ailleurs, vous pouvez d\u00e9couper pr\u00e9alablement le fichier <code>.xml<\/code> volumes en fichiers plus petits de taille \u00e9gales.<\/p>\n<p><b>Un unique enregistrement de notre fichier xml <code>sample_demo.xml<\/code>, un <code>row<\/code><\/b><\/p>\n<pre lang=\"xml\" line=\"1\" escaped=\"true\">\r\n  \r\n  &lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;utf-8&#x27;?&gt;\r\n  &lt;MEMBER_LIST&gt;\r\n  &lt;!-- \/\/ some records --&gt;\r\n\r\n          &lt;row&gt;\r\n        &lt;MEMBER num=&quot;1&quot;&gt;&lt;\/MEMBER&gt;\r\n        &lt;CAMPAGNE_ID&gt;TT1114079764&lt;\/CAMPAGNE_ID&gt;\r\n        &lt;MEMBER_ID&gt;9437858932541&lt;\/MEMBER_ID&gt;\r\n        &lt;CLIENT_ID&gt;1187635315&lt;\/CLIENT_ID&gt;\r\n        &lt;EMVHBQ&gt;&lt;\/EMVHBQ&gt;\r\n        &lt;EMVISP&gt;&lt;\/EMVISP&gt;\r\n        &lt;DATEJOIN&gt;12\/05\/2011&lt;\/DATEJOIN&gt;\r\n        &lt;DATEUNJOIN&gt;&lt;\/DATEUNJOIN&gt;\r\n        &lt;EMAIL&gt;barack.ndlf@lamaisonblanche.eu&lt;\/EMAIL&gt;\r\n        &lt;EMVCELLPHONE&gt;&lt;\/EMVCELLPHONE&gt;\r\n        &lt;EMVUNROUTABLE&gt;&lt;\/EMVUNROUTABLE&gt;\r\n        &lt;HBQ_REASON&gt;&lt;\/HBQ_REASON&gt;\r\n        &lt;SMS_DATE_UNJOIN&gt;&lt;\/SMS_DATE_UNJOIN&gt;\r\n        &lt;SMS_EMVHBQ&gt;&lt;\/SMS_EMVHBQ&gt;\r\n        &lt;SMS_HBQ_REASON&gt;&lt;\/SMS_HBQ_REASON&gt;\r\n        &lt;FIRSTNAME&gt;Barack&lt;\/FIRSTNAME&gt;\r\n        &lt;LASTNAME&gt;N'diang-Le floc'h&lt;\/LASTNAME&gt;\r\n        &lt;TITLE&gt;&lt;\/TITLE&gt;\r\n        &lt;DATEOFBIRTH&gt;&lt;\/DATEOFBIRTH&gt;\r\n        &lt;ADRESSE&gt;&lt;\/ADRESSE&gt;\r\n        &lt;ANNEE_NAISSANCE&gt;&lt;\/ANNEE_NAISSANCE&gt;\r\n        &lt;CHAMP_DATE_1&gt;&lt;\/CHAMP_DATE_1&gt;\r\n        &lt;CHAMP_DATE_2&gt;&lt;\/CHAMP_DATE_2&gt;\r\n        &lt;CHAMP_DATE_3&gt;&lt;\/CHAMP_DATE_3&gt;\r\n        &lt;CHAMP_DATE_4&gt;&lt;\/CHAMP_DATE_4&gt;\r\n        &lt;CHAMP_DATE_5&gt;&lt;\/CHAMP_DATE_5&gt;\r\n        &lt;CHAMP_NUM_1&gt;&lt;\/CHAMP_NUM_1&gt;\r\n        &lt;CHAMP_NUM_2&gt;&lt;\/CHAMP_NUM_2&gt;\r\n        &lt;CHAMP_NUM_3&gt;&lt;\/CHAMP_NUM_3&gt;\r\n        &lt;CHAMP_NUM_4&gt;&lt;\/CHAMP_NUM_4&gt;\r\n        &lt;CHAMP_NUM_5&gt;&lt;\/CHAMP_NUM_5&gt;\r\n        &lt;CHAMP_TXT_3&gt;&lt;\/CHAMP_TXT_3&gt;\r\n        &lt;CHAMP_TXT_4&gt;&lt;\/CHAMP_TXT_4&gt;\r\n        &lt;CHAMP_TXT_5&gt;&lt;\/CHAMP_TXT_5&gt;\r\n        &lt;CLIENTURN&gt;&lt;\/CLIENTURN&gt;\r\n        &lt;CODE&gt;&lt;\/CODE&gt;\r\n        &lt;CODEPOSTAL&gt;&lt;\/CODEPOSTAL&gt;\r\n        &lt;COUNTRY&gt;&lt;\/COUNTRY&gt;\r\n        &lt;CRENEAU_HORAIRE&gt;&lt;\/CRENEAU_HORAIRE&gt;\r\n        &lt;DATE_ABO_ALERT&gt;&lt;\/DATE_ABO_ALERT&gt;\r\n        &lt;DATE_ABO_AUTOPROMO&gt;&lt;\/DATE_ABO_AUTOPROMO&gt;\r\n        &lt;DATE_ABO_BESTOF_OBS&gt;&lt;\/DATE_ABO_BESTOF_OBS&gt;\r\n        &lt;DATE_ABO_BESTOF_WEEK&gt;&lt;\/DATE_ABO_BESTOF_WEEK&gt;\r\n        &lt;DATE_ABO_BESTOF_W_END&gt;&lt;\/DATE_ABO_BESTOF_W_END&gt;\r\n        &lt;DATE_ABO_NEWS&gt;&lt;\/DATE_ABO_NEWS&gt;\r\n        &lt;DATE_DEMANDE_MODIFICATION_PROF&gt;&lt;\/DATE_DEMANDE_MODIFICATION_PROF&gt;\r\n        &lt;DATE_DESABO_ALERT&gt;&lt;\/DATE_DESABO_ALERT&gt;\r\n        &lt;DATE_DESABO_AUTOPROMO&gt;&lt;\/DATE_DESABO_AUTOPROMO&gt;\r\n        &lt;DATE_DESABO_BESTOF_OBS&gt;&lt;\/DATE_DESABO_BESTOF_OBS&gt;\r\n        &lt;DATE_DESABO_BESTOF_WEEK&gt;&lt;\/DATE_DESABO_BESTOF_WEEK&gt;\r\n        &lt;DATE_DESABO_BESTOF_W_END&gt;&lt;\/DATE_DESABO_BESTOF_W_END&gt;\r\n        &lt;DATE_DESABO_NEWS&gt;&lt;\/DATE_DESABO_NEWS&gt;\r\n        &lt;DATE_ENVOI_PDM&gt;&lt;\/DATE_ENVOI_PDM&gt;\r\n        &lt;DATE_MODIFICATION_PROFIL&gt;&lt;\/DATE_MODIFICATION_PROFIL&gt;\r\n        &lt;DATE_MODIF_NEWS&gt;&lt;\/DATE_MODIF_NEWS&gt;\r\n        &lt;EMAIL_FORMAT&gt;&lt;\/EMAIL_FORMAT&gt;\r\n        &lt;EMAIL_ORIGINE&gt;&lt;\/EMAIL_ORIGINE&gt;\r\n        &lt;EMVADMIN1&gt;&lt;\/EMVADMIN1&gt;\r\n        &lt;EMVADMIN2&gt;&lt;\/EMVADMIN2&gt;\r\n        &lt;EMVADMIN3&gt;&lt;\/EMVADMIN3&gt;\r\n        &lt;EMVADMIN4&gt;&lt;\/EMVADMIN4&gt;\r\n        &lt;EMVADMIN5&gt;&lt;\/EMVADMIN5&gt;\r\n        &lt;EMVDOUBLON&gt;&lt;\/EMVDOUBLON&gt;\r\n        &lt;FAI&gt;&lt;\/FAI&gt;\r\n        &lt;FREQUENCE&gt;&lt;\/FREQUENCE&gt;\r\n        &lt;GENDER&gt;&lt;\/GENDER&gt;\r\n        &lt;HEURE_ENVOI&gt;&lt;\/HEURE_ENVOI&gt;\r\n        &lt;LASTACTIVITY&gt;&lt;\/LASTACTIVITY&gt;\r\n        &lt;LG&gt;&lt;\/LG&gt;\r\n        &lt;LHE&gt;&lt;\/LHE&gt;\r\n        &lt;MESSAGEID_PDM&gt;&lt;\/MESSAGEID_PDM&gt;\r\n        &lt;MOBICLIP&gt;&lt;\/MOBICLIP&gt;\r\n        &lt;NEWS_MENU&gt;&lt;\/NEWS_MENU&gt;\r\n        &lt;OPTINALERT&gt;&lt;\/OPTINALERT&gt;\r\n        &lt;OPTINMONFRANCE&gt;&lt;\/OPTINMONFRANCE&gt;\r\n        &lt;OPTINPARTENAIRES&gt;&lt;\/OPTINPARTENAIRES&gt;\r\n        &lt;OPTIN_ACTU_AFRIQUE&gt;1&lt;\/OPTIN_ACTU_AFRIQUE&gt;\r\n        &lt;OPTIN_ACTU_MONDE&gt;1&lt;\/OPTIN_ACTU_MONDE&gt;\r\n        &lt;OPTIN_ACTU_MUSIQUE&gt;False&lt;\/OPTIN_ACTU_MUSIQUE&gt;\r\n        &lt;OPTIN_AUTOPROMO&gt;&lt;\/OPTIN_AUTOPROMO&gt;\r\n        &lt;OPTIN_BESTOF_OBS&gt;&lt;\/OPTIN_BESTOF_OBS&gt;\r\n        &lt;OPTIN_BESTOF_WEEK&gt;&lt;\/OPTIN_BESTOF_WEEK&gt;\r\n        &lt;OPTIN_BESTOF_W_END&gt;&lt;\/OPTIN_BESTOF_W_END&gt;\r\n        &lt;OPTIN_MFI&gt;&lt;\/OPTIN_MFI&gt;\r\n        &lt;OPTIN_NEWSLETTER5&gt;&lt;\/OPTIN_NEWSLETTER5&gt;\r\n        &lt;OPTIN_NEWSLETTERS&gt;&lt;\/OPTIN_NEWSLETTERS&gt;\r\n        &lt;OPTIN_OFFRE_PARTENAIRE&gt;&lt;\/OPTIN_OFFRE_PARTENAIRE&gt;\r\n        &lt;OPTIN_OFFRE_RFI&gt;&lt;\/OPTIN_OFFRE_RFI&gt;\r\n        &lt;OP_MARKETING&gt;&lt;\/OP_MARKETING&gt;\r\n        &lt;OP_WEBMARKETING&gt;&lt;\/OP_WEBMARKETING&gt;\r\n        &lt;PAYS&gt;&lt;\/PAYS&gt;\r\n        &lt;PROFESSION&gt;&lt;\/PROFESSION&gt;\r\n        &lt;SEED&gt;&lt;\/SEED&gt;\r\n        &lt;SEGMENT&gt;&lt;\/SEGMENT&gt;\r\n        &lt;SOURCE&gt;IHH&lt;\/SOURCE&gt;\r\n        &lt;SYNCHRO_INSERT&gt;&lt;\/SYNCHRO_INSERT&gt;\r\n        &lt;SYNCHRO_UNJOIN&gt;&lt;\/SYNCHRO_UNJOIN&gt;\r\n        &lt;SYNCHRO_UPDATE&gt;&lt;\/SYNCHRO_UPDATE&gt;\r\n        &lt;TELEPHONE&gt;&lt;\/TELEPHONE&gt;\r\n        &lt;TEMP10_NBMAX&gt;&lt;\/TEMP10_NBMAX&gt;\r\n        &lt;TEMP10_TOPIC&gt;&lt;\/TEMP10_TOPIC&gt;\r\n        &lt;TEMP11_NBMAX&gt;&lt;\/TEMP11_NBMAX&gt;\r\n        &lt;TEMP11_TOPIC&gt;&lt;\/TEMP11_TOPIC&gt;\r\n        &lt;TEMP1_NBMAX&gt;&lt;\/TEMP1_NBMAX&gt;\r\n        &lt;TEMP1_TOPIC&gt;&lt;\/TEMP1_TOPIC&gt;\r\n        &lt;TEMP2_NBMAX&gt;&lt;\/TEMP2_NBMAX&gt;\r\n        &lt;TEMP2_TOPIC&gt;&lt;\/TEMP2_TOPIC&gt;\r\n        &lt;TEMP3_NBMAX&gt;&lt;\/TEMP3_NBMAX&gt;\r\n        &lt;TEMP3_TOPIC&gt;&lt;\/TEMP3_TOPIC&gt;\r\n        &lt;TEMP4_NBMAX&gt;&lt;\/TEMP4_NBMAX&gt;\r\n        &lt;TEMP4_TOPIC&gt;&lt;\/TEMP4_TOPIC&gt;\r\n        &lt;TEMP5_NBMAX&gt;&lt;\/TEMP5_NBMAX&gt;\r\n        &lt;TEMP5_TOPIC&gt;&lt;\/TEMP5_TOPIC&gt;\r\n        &lt;TEMP6_NBMAX&gt;&lt;\/TEMP6_NBMAX&gt;\r\n        &lt;TEMP6_TOPIC&gt;&lt;\/TEMP6_TOPIC&gt;\r\n        &lt;TEMP7_NBMAX&gt;&lt;\/TEMP7_NBMAX&gt;\r\n        &lt;TEMP7_TOPIC&gt;&lt;\/TEMP7_TOPIC&gt;\r\n        &lt;TEMP8_NBMAX&gt;&lt;\/TEMP8_NBMAX&gt;\r\n        &lt;TEMP8_TOPIC&gt;&lt;\/TEMP8_TOPIC&gt;\r\n        &lt;TEMP9_NBMAX&gt;&lt;\/TEMP9_NBMAX&gt;\r\n        &lt;TEMP9_TOPIC&gt;&lt;\/TEMP9_TOPIC&gt;\r\n        &lt;TEMPLATE_TYPE&gt;&lt;\/TEMPLATE_TYPE&gt;\r\n        &lt;UPLOAD_ID&gt;&lt;\/UPLOAD_ID&gt;\r\n        &lt;VILLE&gt;&lt;\/VILLE&gt;\r\n        &lt;ZONE&gt;&lt;\/ZONE&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;!-- \/\/ some records --&gt;\r\n  &lt;\/MEMBER_LIST&gt;\r\n  \r\n<\/pre>\n<p>On peut donc consid\u00e9rer que notre gros fichier contient 2 190 enregistrements et qu&#8217;un enregistrement (row) fait 129 lignes.<\/p>\n<p><b>Si on souhaite scinder le gros fichier en petits fichiers de taille \u00e9gale de 500 enregistrements, un rapide calcul nous le donne <code>(282 449x500)\/2 190 = 64 500<\/code>, soit 5 fichiers.<\/b><\/p>\n<p><b>Scinder le gros fichier <code>.xml<\/code> &#8220;quick and dirty&#8221;<\/b><\/p>\n<pre lang=\"bash\">\r\nsplit -l 103 200 \/path_to_file\/big_file.xml \/path_to_file\/destination\/small_file_\r\n<\/pre>\n<p><b>Ajouter l&#8217;extension .xml aux fichiers small_file_aa small_file_ab small_file_ac&#8230;etc.<\/b><\/p>\n<pre lang=\"bash\">\r\nfor f in $(find . -type f); do mv $f ${f}.xml; done\r\n<\/pre>\n<p><b>Attention, la d\u00e9coupe est faite \u00e0 la hache, v\u00e9rifier tout de m\u00eame de pas scinder au milieu un enregistrement, d&#8217;une balise <code>&lt;row&gt;...&lt;\/row&gt;<\/code>.<\/b><\/p>\n<h4>2. Utiliser SimpleXML<\/h4>\n<p>SimpleXML est une extension de PHP 5 destin\u00e9e \u00e0 simplifier la manipulation des documents XML. Par rapport \u00e0 DOM ou au parser Expat, SimpleXML peut \u00eatre utilis\u00e9 en quelques lignes de code pour lire et extraire des donn\u00e9es de fichiers XML, notamment en manipulant les noeuds (nodes) ou les attributs (attributes) de votre fichier <code>.xml<\/code>.<\/p>\n<p><b>Nous allons nous servir d&#8217;un petit script <code>.php<\/code> pour se servir de <code>SimpleXML<\/code> et g\u00e9n\u00e9rer des requ\u00eates d&#8217;insertion <code>sql<\/code> pour charger un fichier <code>.sql<\/code> qui reprend les donn\u00e9es de notre XML bien gras que nous venons d&#8217;\u00e9carir \u00e0 l&#8217;aide de split.<\/b><\/p>\n<p><b>La base de donn\u00e9es et mettre la table<\/b><\/p>\n<ul>\n<li>Database: fsb_cpg_opened<\/li>\n<li>Table: member_list_index_full<\/li>\n<\/ul>\n<pre lang=\"SQL\">\r\n  -- --------------------------------------------------------\r\n\r\n  --\r\n  -- Table structure for table `member_list_index_full`\r\n  --\r\n\r\n  CREATE TABLE `member_list_index_full` (\r\n    `id` int(11) NOT NULL AUTO_INCREMENT,\r\n    `campagne_id` text,\r\n    `member_id` text,\r\n    `client_id` text,\r\n    `emvhbq` text,\r\n    `emvisp` text,\r\n    `datejoin` text,\r\n    `dateunjoin` text,\r\n    `email` varchar(255) NOT NULL DEFAULT '',\r\n    `emvcellphone` text,\r\n    `emvunroutable` text,\r\n    `hbq_reason` text,\r\n    `sms_date_unjoin` text,\r\n    `sms_emvhbq` text,\r\n    `sms_hbq_reason` text,\r\n    `firstname` varchar(255) NOT NULL DEFAULT '',\r\n    `lastname` varchar(255) NOT NULL DEFAULT '',\r\n    `title` text,\r\n    `dateofbirth` text,\r\n    `adresse` text,\r\n    `annee_naissance` text,\r\n    `champ_date_1` text,\r\n    `champ_date_2` text,\r\n    `champ_date_3` text,\r\n    `champ_date_4` text,\r\n    `champ_date_5` text,\r\n    `champ_num_1` text,\r\n    `champ_num_2` text,\r\n    `champ_num_3` text,\r\n    `champ_num_4` text,\r\n    `champ_num_5` text,\r\n    `champ_txt_3` text,\r\n    `champ_txt_4` text,\r\n    `champ_txt_5` text,\r\n    `clienturn` text,\r\n    `code` text,\r\n    `codepostal` text,\r\n    `country` text,\r\n    `creneau_horaire` text,\r\n    `date_abo_alert` text,\r\n    `date_abo_autopromo` text,\r\n    `date_abo_bestof_obs` text,\r\n    `date_abo_bestof_week` text,\r\n    `date_abo_bestof_w_end` text,\r\n    `date_abo_news` text,\r\n    `date_demande_modification_prof` text,\r\n    `date_desabo_alert` text,\r\n    `date_desabo_autopromo` text,\r\n    `date_desabo_bestof_obs` text,\r\n    `date_desabo_bestof_week` text,\r\n    `date_desabo_bestof_w_end` text,\r\n    `date_desabo_news` text,\r\n    `date_envoi_pdm` text,\r\n    `date_modification_profil` text,\r\n    `date_modif_news` text,\r\n    `email_format` text,\r\n    `email_origine` text,\r\n    `emvadmin1` text,\r\n    `emvadmin2` text,\r\n    `emvadmin3` text,\r\n    `emvadmin4` text,\r\n    `emvadmin5` text,\r\n    `emvdoublon` text,\r\n    `fai` text,\r\n    `frequence` text,\r\n    `gender` text,\r\n    `heure_envoi` text,\r\n    `lastactivity` text,\r\n    `lg` text,\r\n    `lhe` text,\r\n    `messageid_pdm` text,\r\n    `mobiclip` text,\r\n    `news_menu` text,\r\n    `optinalert` text,\r\n    `optinmonfrance` text,\r\n    `optinpartenaires` text,\r\n    `optin_actu_afrique` text,\r\n    `optin_actu_monde` text,\r\n    `optin_actu_musique` text,\r\n    `optin_autopromo` text,\r\n    `optin_bestof_obs` text,\r\n    `optin_bestof_week` text,\r\n    `optin_bestof_w_end` text,\r\n    `optin_mfi` text,\r\n    `optin_newsletter5` text,\r\n    `optin_newsletters` text,\r\n    `optin_offre_partenaire` text,\r\n    `optin_offre_rfi` text,\r\n    `op_marketing` text,\r\n    `op_webmarketing` text,\r\n    `pays` text,\r\n    `profession` text,\r\n    `seed` text,\r\n    `segment` text,\r\n    `source` text,\r\n    `synchro_insert` text,\r\n    `synchro_unjoin` text,\r\n    `synchro_update` text,\r\n    `telephone` text,\r\n    `temp10_nbmax` text,\r\n    `temp10_topic` text,\r\n    `temp11_nbmax` text,\r\n    `temp11_topic` text,\r\n    `temp1_nbmax` text,\r\n    `temp1_topic` text,\r\n    `temp2_nbmax` text,\r\n    `temp2_topic` text,\r\n    `temp3_nbmax` text,\r\n    `temp3_topic` text,\r\n    `temp4_nbmax` text,\r\n    `temp4_topic` text,\r\n    `temp5_nbmax` text,\r\n    `temp5_topic` text,\r\n    `temp6_nbmax` text,\r\n    `temp6_topic` text,\r\n    `temp7_nbmax` text,\r\n    `temp7_topic` text,\r\n    `temp8_nbmax` text,\r\n    `temp8_topic` text,\r\n    `temp9_nbmax` text,\r\n    `temp9_topic` text,\r\n    `template_type` text,\r\n    `upload_id` text,\r\n    `ville` text,\r\n    `zone` text,\r\n    PRIMARY KEY (`id`),\r\n    FULLTEXT KEY `ind_full_email` (`email`),\r\n    FULLTEXT KEY `ind_full_firstname` (`firstname`),\r\n    FULLTEXT KEY `ind_full_lastname` (`lastname`),\r\n    FULLTEXT KEY `ind_full_ema_fir_las` (`email`,`firstname`,`lastname`)\r\n  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;\r\n<\/pre>\n<h4>3. G\u00e9n\u00e9rer l&#8217;ensemble des requ\u00eates pour injecter le contenu du XML dans la BDD<\/h4>\n<p>On va se servir d&#8217;un mod\u00e8le de requ\u00eate tout b\u00eate d&#8217;insertion. Faite attention, lorsque vous h\u00e9ritez des donn\u00e9es de langue \u00e9trang\u00e8re, le fran\u00e7ais est \u00e0 ce titre une langue \u00e9trang\u00e8re, il faut faire une petite &#8220;sanitization&#8221;  de vos donn\u00e9es avant des les injecter dans votre requ\u00eate SQL. Prenons par exemple, une personne fictive dot\u00e9e d&#8217;un nom d&#8217;origine bretonne et africaine, nommons-le <code>Barack N'diang-Le floc'h<\/code>. Cet individu est donc dot\u00e9 d&#8217;une double apostrophe, il faut donc prot\u00e9ger avec des <code>addslashes<\/code> le nom de ce brave homme, ce qui donne <code>N\\'diang-Le floc\\'h<\/code>.<\/p>\n<p><code>fsb_cpg_opened_massive_insert.php<\/code><\/p>\n<pre lang=\"php\" line=\"1\">\r\n  \/*  Source : http:\/\/www.phpro.org\/tutorials\/Introduction-To-SimpleXML-With-PHP.html *\/\r\n\r\n\r\n  \/*** create a SimpleXML object ***\/ \r\n      if( ! $xml = simplexml_load_file(\"sample_demo.xml\") ) \r\n      { \r\n      echo \"Unable to load XML file\"; \r\n      } else { \r\n            $i = 0; \r\n            \/*** loop over the elements ***\/ \r\n            foreach($xml as $node) { \r\n                \r\n                \/* MODEL *\/\r\n                \/*\r\n                <MEMBER num=\"1\"><\/MEMBER>\r\n                        <CAMPAGNE_ID>TT1114079764<\/CAMPAGNE_ID>\r\n                        <MEMBER_ID>9437858932541<\/MEMBER_ID>\r\n                        <CLIENT_ID>1187635315<\/CLIENT_ID>\r\n                        <EMVHBQ><\/EMVHBQ>\r\n                        <EMVISP><\/EMVISP>\r\n                        <DATEJOIN>12\/05\/2011<\/DATEJOIN>\r\n                        <DATEUNJOIN><\/DATEUNJOIN>\r\n                        <EMAIL>barack.ndlf@lamaisonblanche.eu<\/EMAIL>\r\n                        <EMVCELLPHONE><\/EMVCELLPHONE>\r\n                        <EMVUNROUTABLE><\/EMVUNROUTABLE>\r\n                        <HBQ_REASON><\/HBQ_REASON>\r\n                        <SMS_DATE_UNJOIN><\/SMS_DATE_UNJOIN>\r\n                        <SMS_EMVHBQ><\/SMS_EMVHBQ>\r\n                        <SMS_HBQ_REASON><\/SMS_HBQ_REASON>\r\n                        <FIRSTNAME>Barack<\/FIRSTNAME>\r\n                        <LASTNAME>N'diang-Le floc'h<\/LASTNAME>\r\n                        <TITLE><\/TITLE>\r\n                        ... to be continued\r\n                *\/\r\n                \r\n                \/* VALUES *\/\r\n                $MEMBER_num = $xml->row[$i]->MEMBER->attributes();\r\n                $CAMPAGNE_ID = $xml->row[$i]->CAMPAGNE_ID;\r\n                $MEMBER_ID = $xml->row[$i]->MEMBER_ID;\r\n                $CLIENT_ID = $xml->row[$i]->CLIENT_ID;\r\n                $EMVHBQ = $xml->row[$i]->EMVHBQ;\r\n                $EMVISP = $xml->row[$i]->EMVISP;\r\n                $DATEJOIN = $xml->row[$i]->DATEJOIN;\r\n                $EMAIL = $xml->row[$i]->EMAIL;\r\n                $EMVCELLPHONE = $xml->row[$i]->EMVCELLPHONE;\r\n                $EMVUNROUTABLE = $xml->row[$i]->EMVUNROUTABLE;\r\n                $HBQ_REASON = $xml->row[$i]->HBQ_REASON;\r\n                $SMS_DATE_UNJOIN = $xml->row[$i]->SMS_DATE_UNJOIN;\r\n                $SMS_EMVHBQ = $xml->row[$i]->SMS_EMVHBQ;\r\n                $SMS_HBQ_REASON = $xml->row[$i]->SMS_HBQ_REASON;\r\n                $FIRSTNAME = $xml->row[$i]->FIRSTNAME;\r\n                $LASTNAME = $xml->row[$i]->LASTNAME;\r\n                $TITLE = $xml->row[$i]->TITLE;\r\n                $DATEOFBIRTH = $xml->row[$i]->DATEOFBIRTH;\r\n                $ADRESSE = $xml->row[$i]->ADRESSE;\r\n                $ANNEE_NAISSANCE = $xml->row[$i]->ANNEE_NAISSANCE;\r\n                $CHAMP_DATE_1 = $xml->row[$i]->CHAMP_DATE_1;\r\n                $CHAMP_DATE_2 = $xml->row[$i]->CHAMP_DATE_2;\r\n                $CHAMP_DATE_3 = $xml->row[$i]->CHAMP_DATE_3;\r\n                $CHAMP_DATE_4 = $xml->row[$i]->CHAMP_DATE_4;\r\n                $CHAMP_DATE_5 = $xml->row[$i]->CHAMP_DATE_5;\r\n                $CHAMP_NUM_1 = $xml->row[$i]->CHAMP_NUM_1;\r\n                $CHAMP_NUM_2 = $xml->row[$i]->CHAMP_NUM_2;\r\n                $CHAMP_NUM_3 = $xml->row[$i]->CHAMP_NUM_3;\r\n                $CHAMP_NUM_4 = $xml->row[$i]->CHAMP_NUM_4;\r\n                $CHAMP_NUM_5 = $xml->row[$i]->CHAMP_NUM_5;\r\n                $CHAMP_TXT_3 = $xml->row[$i]->CHAMP_TXT_3;\r\n                $CHAMP_TXT_4 = $xml->row[$i]->CHAMP_TXT_4;\r\n                $CHAMP_TXT_5 = $xml->row[$i]->CHAMP_TXT_5;\r\n                $CLIENTURN = $xml->row[$i]->CLIENTURN;\r\n                $CODE = $xml->row[$i]->CODE;\r\n                $CODEPOSTAL = $xml->row[$i]->CODEPOSTAL;\r\n                $COUNTRY = $xml->row[$i]->COUNTRY;\r\n                $CRENEAU_HORAIRE = $xml->row[$i]->CRENEAU_HORAIRE;\r\n                $DATE_ABO_ALERT = $xml->row[$i]->DATE_ABO_ALERT;\r\n                $DATE_ABO_AUTOPROMO = $xml->row[$i]->DATE_ABO_AUTOPROMO;\r\n                $DATE_ABO_BESTOF_OBS = $xml->row[$i]->DATE_ABO_BESTOF_OBS;\r\n                $DATE_ABO_BESTOF_WEEK = $xml->row[$i]->DATE_ABO_BESTOF_WEEK;\r\n                $DATE_ABO_BESTOF_W_END = $xml->row[$i]->DATE_ABO_BESTOF_W_END;\r\n                $DATE_ABO_NEWS = $xml->row[$i]->DATE_ABO_NEWS;\r\n                $DATE_DEMANDE_MODIFICATION_PROF = $xml->row[$i]->DATE_DEMANDE_MODIFICATION_PROF;\r\n                $DATE_DESABO_ALERT = $xml->row[$i]->DATE_DESABO_ALERT;\r\n                $DATE_DESABO_AUTOPROMO = $xml->row[$i]->DATE_DESABO_AUTOPROMO;\r\n                $DATE_DESABO_BESTOF_OBS = $xml->row[$i]->DATE_DESABO_BESTOF_OBS;\r\n                $DATE_DESABO_BESTOF_WEEK = $xml->row[$i]->DATE_DESABO_BESTOF_WEEK;\r\n                $DATE_DESABO_BESTOF_W_END = $xml->row[$i]->DATE_DESABO_BESTOF_W_END;\r\n                $DATE_DESABO_NEWS = $xml->row[$i]->DATE_DESABO_NEWS;\r\n                $DATE_ENVOI_PDM = $xml->row[$i]->DATE_ENVOI_PDM;\r\n                $DATE_MODIFICATION_PROFIL = $xml->row[$i]->DATE_MODIFICATION_PROFIL;\r\n                $DATE_MODIF_NEWS = $xml->row[$i]->DATE_MODIF_NEWS;\r\n                $EMAIL_FORMAT = $xml->row[$i]->EMAIL_FORMAT;\r\n                $EMAIL_ORIGINE = $xml->row[$i]->EMAIL_ORIGINE;\r\n                $EMVADMIN1 = $xml->row[$i]->EMVADMIN1;\r\n                $EMVADMIN2 = $xml->row[$i]->EMVADMIN2;\r\n                $EMVADMIN3 = $xml->row[$i]->EMVADMIN3;\r\n                $EMVADMIN4 = $xml->row[$i]->EMVADMIN4;\r\n                $EMVADMIN5 = $xml->row[$i]->EMVADMIN5;\r\n                $EMVDOUBLON = $xml->row[$i]->EMVDOUBLON;\r\n                $FAI = $xml->row[$i]->FAI;\r\n                $FREQUENCE = $xml->row[$i]->FREQUENCE;\r\n                $GENDER = $xml->row[$i]->GENDER;\r\n                $HEURE_ENVOI = $xml->row[$i]->HEURE_ENVOI;\r\n                $LASTACTIVITY = $xml->row[$i]->LASTACTIVITY;\r\n                $LG = $xml->row[$i]->LG;\r\n                $LHE = $xml->row[$i]->LHE;\r\n                $MESSAGEID_PDM = $xml->row[$i]->MESSAGEID_PDM;\r\n                $MOBICLIP = $xml->row[$i]->MOBICLIP;\r\n                $NEWS_MENU = $xml->row[$i]->NEWS_MENU;\r\n                $OPTINALERT = $xml->row[$i]->OPTINALERT;\r\n                $OPTINMONFRANCE = $xml->row[$i]->OPTINMONFRANCE;\r\n                $OPTINPARTENAIRES = $xml->row[$i]->OPTINPARTENAIRES;\r\n                $OPTIN_ACTU_AFRIQUE = $xml->row[$i]->OPTIN_ACTU_AFRIQUE;\r\n                $OPTIN_ACTU_MONDE = $xml->row[$i]->OPTIN_ACTU_MONDE;\r\n                $OPTIN_ACTU_MUSIQUE = $xml->row[$i]->OPTIN_ACTU_MUSIQUE;\r\n                $OPTIN_AUTOPROMO = $xml->row[$i]->OPTIN_AUTOPROMO;\r\n                $OPTIN_BESTOF_OBS = $xml->row[$i]->OPTIN_BESTOF_OBS;\r\n                $OPTIN_BESTOF_WEEK = $xml->row[$i]->OPTIN_BESTOF_WEEK;\r\n                $OPTIN_BESTOF_W_END = $xml->row[$i]->OPTIN_BESTOF_W_END;\r\n                $OPTIN_MFI = $xml->row[$i]->OPTIN_MFI;\r\n                $OPTIN_NEWSLETTER5 = $xml->row[$i]->OPTIN_NEWSLETTER5;\r\n                $OPTIN_NEWSLETTERS = $xml->row[$i]->OPTIN_NEWSLETTERS;\r\n                $OPTIN_OFFRE_PARTENAIRE = $xml->row[$i]->OPTIN_OFFRE_PARTENAIRE;\r\n                $OPTIN_OFFRE_RFI = $xml->row[$i]->OPTIN_OFFRE_RFI;\r\n                $OP_MARKETING = $xml->row[$i]->OP_MARKETING;\r\n                $OP_WEBMARKETING = $xml->row[$i]->OP_WEBMARKETING;\r\n                $PAYS = $xml->row[$i]->PAYS;\r\n                $PROFESSION = $xml->row[$i]->PROFESSION;\r\n                $SEED = $xml->row[$i]->SEED;\r\n                $SEGMENT = $xml->row[$i]->SEGMENT;\r\n                $SOURCE = $xml->row[$i]->SOURCE;\r\n                $SYNCHRO_INSERT = $xml->row[$i]->SYNCHRO_INSERT;\r\n                $SYNCHRO_UNJOIN = $xml->row[$i]->SYNCHRO_UNJOIN;\r\n                $SYNCHRO_UPDATE = $xml->row[$i]->SYNCHRO_UPDATE;\r\n                $TELEPHONE = $xml->row[$i]->TELEPHONE;\r\n                $TEMP10_NBMAX = $xml->row[$i]->TEMP10_NBMAX;\r\n                $TEMP10_TOPIC = $xml->row[$i]->TEMP10_TOPIC;\r\n                $TEMP11_NBMAX = $xml->row[$i]->TEMP11_NBMAX;\r\n                $TEMP11_TOPIC = $xml->row[$i]->TEMP11_TOPIC;\r\n                $TEMP1_NBMAX = $xml->row[$i]->TEMP1_NBMAX;\r\n                $TEMP1_TOPIC = $xml->row[$i]->TEMP1_TOPIC;\r\n                $TEMP2_NBMAX = $xml->row[$i]->TEMP2_NBMAX;\r\n                $TEMP2_TOPIC = $xml->row[$i]->TEMP2_TOPIC;\r\n                $TEMP3_NBMAX = $xml->row[$i]->TEMP3_NBMAX;\r\n                $TEMP3_TOPIC = $xml->row[$i]->TEMP3_TOPIC;\r\n                $TEMP4_NBMAX = $xml->row[$i]->TEMP4_NBMAX;\r\n                $TEMP4_TOPIC = $xml->row[$i]->TEMP4_TOPIC;\r\n                $TEMP5_NBMAX = $xml->row[$i]->TEMP5_NBMAX;\r\n                $TEMP5_TOPIC = $xml->row[$i]->TEMP5_TOPIC;\r\n                $TEMP6_NBMAX = $xml->row[$i]->TEMP6_NBMAX;\r\n                $TEMP6_TOPIC = $xml->row[$i]->TEMP6_TOPIC;\r\n                $TEMP7_NBMAX = $xml->row[$i]->TEMP7_NBMAX;\r\n                $TEMP7_TOPIC = $xml->row[$i]->TEMP7_TOPIC;\r\n                $TEMP8_NBMAX = $xml->row[$i]->TEMP8_NBMAX;\r\n                $TEMP8_TOPIC = $xml->row[$i]->TEMP8_TOPIC;\r\n                $TEMP9_NBMAX = $xml->row[$i]->TEMP9_NBMAX;\r\n                $TEMP9_TOPIC = $xml->row[$i]->TEMP9_TOPIC;\r\n                $TEMPLATE_TYPE = $xml->row[$i]->TEMPLATE_TYPE;\r\n                $UPLOAD_ID = $xml->row[$i]->UPLOAD_ID;\r\n                $VILLE = $xml->row[$i]->VILLE;\r\n                $ZONE = $xml->row[$i]->ZONE;\r\n                \r\n                \/* DEBUG *\/\r\n                \/\/ print_r($node); \r\n                \r\n                \/* MODEL QUERY *\/\r\n\r\n                \/*\r\n                INSERT INTO fsb_cpg_opened.member_list_index_full (id, campagne_id, member_id, client_id, emvhbq, emvisp, datejoin, dateunjoin, email, emvcellphone, emvunroutable, hbq_reason, sms_date_unjoin, sms_emvhbq, sms_hbq_reason, firstname, lastname, title, dateofbirth, adresse, annee_naissance, champ_date_1, champ_date_2, champ_date_3, champ_date_4, champ_date_5, champ_num_1, champ_num_2, champ_num_3, champ_num_4, champ_num_5, champ_txt_3, champ_txt_4, champ_txt_5, clienturn, code, codepostal, country, creneau_horaire, date_abo_alert, date_abo_autopromo, date_abo_bestof_obs, date_abo_bestof_week, date_abo_bestof_w_end, date_abo_news, date_demande_modification_prof, date_desabo_alert, date_desabo_autopromo, date_desabo_bestof_obs, date_desabo_bestof_week, date_desabo_bestof_w_end, date_desabo_news, date_envoi_pdm, date_modification_profil, date_modif_news, email_format, email_origine, emvadmin1, emvadmin2, emvadmin3, emvadmin4, emvadmin5, emvdoublon, fai, frequence, gender, heure_envoi, lastactivity, lg, lhe, messageid_pdm, mobiclip, news_menu, optinalert, optinmonfrance, optinpartenaires, optin_actu_afrique, optin_actu_monde, optin_actu_musique, optin_autopromo, optin_bestof_obs, optin_bestof_week, optin_bestof_w_end, optin_mfi, optin_newsletter5, optin_newsletters, optin_offre_partenaire, optin_offre_rfi, op_marketing, op_webmarketing, pays, profession, seed, segment, source, synchro_insert, synchro_unjoin, synchro_update, telephone, temp10_nbmax, temp10_topic, temp11_nbmax, temp11_topic, temp1_nbmax, temp1_topic, temp2_nbmax, temp2_topic, temp3_nbmax, temp3_topic, temp4_nbmax, temp4_topic, temp5_nbmax, temp5_topic, temp6_nbmax, temp6_topic, temp7_nbmax, temp7_topic, temp8_nbmax, temp8_topic, temp9_nbmax, temp9_topic, template_type, upload_id, ville, zone) VALUES (NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);\r\n                *\/\r\n                \r\n                echo ('INSERT INTO fsb_cpg_opened.member_list_index_full (id, campagne_id, member_id, client_id, emvhbq, emvisp, datejoin, dateunjoin, email, emvcellphone, emvunroutable, hbq_reason, sms_date_unjoin, sms_emvhbq, sms_hbq_reason, firstname, lastname, title, dateofbirth, adresse, annee_naissance, champ_date_1, champ_date_2, champ_date_3, champ_date_4, champ_date_5, champ_num_1, champ_num_2, champ_num_3, champ_num_4, champ_num_5, champ_txt_3, champ_txt_4, champ_txt_5, clienturn, code, codepostal, country, creneau_horaire, date_abo_alert, date_abo_autopromo, date_abo_bestof_obs, date_abo_bestof_week, date_abo_bestof_w_end, date_abo_news, date_demande_modification_prof, date_desabo_alert, date_desabo_autopromo, date_desabo_bestof_obs, date_desabo_bestof_week, date_desabo_bestof_w_end, date_desabo_news, date_envoi_pdm, date_modification_profil, date_modif_news, email_format, email_origine, emvadmin1, emvadmin2, emvadmin3, emvadmin4, emvadmin5, emvdoublon, fai, frequence, gender, heure_envoi, lastactivity, lg, lhe, messageid_pdm, mobiclip, news_menu, optinalert, optinmonfrance, optinpartenaires, optin_actu_afrique, optin_actu_monde, optin_actu_musique, optin_autopromo, optin_bestof_obs, optin_bestof_week, optin_bestof_w_end, optin_mfi, optin_newsletter5, optin_newsletters, optin_offre_partenaire, optin_offre_rfi, op_marketing, op_webmarketing, pays, profession, seed, segment, source, synchro_insert, synchro_unjoin, synchro_update, telephone, temp10_nbmax, temp10_topic, temp11_nbmax, temp11_topic, temp1_nbmax, temp1_topic, temp2_nbmax, temp2_topic, temp3_nbmax, temp3_topic, temp4_nbmax, temp4_topic, temp5_nbmax, temp5_topic, temp6_nbmax, temp6_topic, temp7_nbmax, temp7_topic, temp8_nbmax, temp8_topic, temp9_nbmax, temp9_topic, template_type, upload_id, ville, zone) VALUES');\r\n                \r\n                echo ('(NULL,');                  \r\n                echo ('\\''.$MEMBER_num.'\\',');\r\n                echo ('\\''.$CAMPAGNE_ID.'\\',');\r\n                echo ('\\''.$MEMBER_ID.'\\',');\r\n                echo ('\\''.$CLIENT_ID.'\\',');\r\n                echo ('\\''.$EMVHBQ.'\\',');\r\n                echo ('\\''.$EMVISP.'\\',');\r\n                echo ('\\''.$DATEJOIN.'\\',');\r\n                echo ('\\''.$EMAIL.'\\',');\r\n                echo ('\\''.$EMVCELLPHONE.'\\',');\r\n                echo ('\\''.$EMVUNROUTABLE.'\\',');\r\n                echo ('\\''.$HBQ_REASON.'\\',');\r\n                echo ('\\''.$SMS_DATE_UNJOIN.'\\',');\r\n                echo ('\\''.$SMS_EMVHBQ.'\\',');\r\n                echo ('\\''.$SMS_HBQ_REASON.'\\',');\r\n                echo ('\\''.addslashes($FIRSTNAME).'\\',');\r\n                echo ('\\''.addslashes($LASTNAME).'\\',');\r\n                echo ('\\''.$TITLE.'\\',');\r\n                echo ('\\''.$DATEOFBIRTH.'\\',');\r\n                echo ('\\''.$ADRESSE.'\\',');\r\n                echo ('\\''.$ANNEE_NAISSANCE.'\\',');\r\n                echo ('\\''.$CHAMP_DATE_1.'\\',');\r\n                echo ('\\''.$CHAMP_DATE_2.'\\',');\r\n                echo ('\\''.$CHAMP_DATE_3.'\\',');\r\n                echo ('\\''.$CHAMP_DATE_4.'\\',');\r\n                echo ('\\''.$CHAMP_DATE_5.'\\',');\r\n                echo ('\\''.$CHAMP_NUM_1.'\\',');\r\n                echo ('\\''.$CHAMP_NUM_2.'\\',');\r\n                echo ('\\''.$CHAMP_NUM_3.'\\',');\r\n                echo ('\\''.$CHAMP_NUM_4.'\\',');\r\n                echo ('\\''.$CHAMP_NUM_5.'\\',');\r\n                echo ('\\''.$CHAMP_TXT_3.'\\',');\r\n                echo ('\\''.$CHAMP_TXT_4.'\\',');\r\n                echo ('\\''.$CHAMP_TXT_5.'\\',');\r\n                echo ('\\''.$CLIENTURN.'\\',');\r\n                echo ('\\''.$CODE.'\\',');\r\n                echo ('\\''.$CODEPOSTAL.'\\',');\r\n                echo ('\\''.$COUNTRY.'\\',');\r\n                echo ('\\''.$CRENEAU_HORAIRE.'\\',');\r\n                echo ('\\''.$DATE_ABO_ALERT.'\\',');\r\n                echo ('\\''.$DATE_ABO_AUTOPROMO.'\\',');\r\n                echo ('\\''.$DATE_ABO_BESTOF_OBS.'\\',');\r\n                echo ('\\''.$DATE_ABO_BESTOF_WEEK.'\\',');\r\n                echo ('\\''.$DATE_ABO_BESTOF_W_END.'\\',');\r\n                echo ('\\''.$DATE_ABO_NEWS.'\\',');\r\n                echo ('\\''.$DATE_DEMANDE_MODIFICATION_PROF.'\\',');\r\n                echo ('\\''.$DATE_DESABO_ALERT.'\\',');\r\n                echo ('\\''.$DATE_DESABO_AUTOPROMO.'\\',');\r\n                echo ('\\''.$DATE_DESABO_BESTOF_OBS.'\\',');\r\n                echo ('\\''.$DATE_DESABO_BESTOF_WEEK.'\\',');\r\n                echo ('\\''.$DATE_DESABO_BESTOF_W_END.'\\',');\r\n                echo ('\\''.$DATE_DESABO_NEWS.'\\',');\r\n                echo ('\\''.$DATE_ENVOI_PDM.'\\',');\r\n                echo ('\\''.$DATE_MODIFICATION_PROFIL.'\\',');\r\n                echo ('\\''.$DATE_MODIF_NEWS.'\\',');\r\n                echo ('\\''.$EMAIL_FORMAT.'\\',');\r\n                echo ('\\''.$EMAIL_ORIGINE.'\\',');\r\n                echo ('\\''.$EMVADMIN1.'\\',');\r\n                echo ('\\''.$EMVADMIN2.'\\',');\r\n                echo ('\\''.$EMVADMIN3.'\\',');\r\n                echo ('\\''.$EMVADMIN4.'\\',');\r\n                echo ('\\''.$EMVADMIN5.'\\',');\r\n                echo ('\\''.$EMVDOUBLON.'\\',');\r\n                echo ('\\''.$FAI.'\\',');\r\n                echo ('\\''.$FREQUENCE.'\\',');\r\n                echo ('\\''.$GENDER.'\\',');\r\n                echo ('\\''.$HEURE_ENVOI.'\\',');\r\n                echo ('\\''.$LASTACTIVITY.'\\',');\r\n                echo ('\\''.$LG.'\\',');\r\n                echo ('\\''.$LHE.'\\',');\r\n                echo ('\\''.$MESSAGEID_PDM.'\\',');\r\n                echo ('\\''.$MOBICLIP.'\\',');\r\n                echo ('\\''.$NEWS_MENU.'\\',');\r\n                echo ('\\''.$OPTINALERT.'\\',');\r\n                echo ('\\''.$OPTINMONFRANCE.'\\',');\r\n                echo ('\\''.$OPTINPARTENAIRES.'\\',');\r\n                echo ('\\''.$OPTIN_ACTU_AFRIQUE.'\\',');\r\n                echo ('\\''.$OPTIN_ACTU_MONDE.'\\',');\r\n                echo ('\\''.$OPTIN_ACTU_MUSIQUE.'\\',');\r\n                echo ('\\''.$OPTIN_AUTOPROMO.'\\',');\r\n                echo ('\\''.$OPTIN_BESTOF_OBS.'\\',');\r\n                echo ('\\''.$OPTIN_BESTOF_WEEK.'\\',');\r\n                echo ('\\''.$OPTIN_BESTOF_W_END.'\\',');\r\n                echo ('\\''.$OPTIN_MFI.'\\',');\r\n                echo ('\\''.$OPTIN_NEWSLETTER5.'\\',');\r\n                echo ('\\''.$OPTIN_NEWSLETTERS.'\\',');\r\n                echo ('\\''.$OPTIN_OFFRE_PARTENAIRE.'\\',');\r\n                echo ('\\''.$OPTIN_OFFRE_RFI.'\\',');\r\n                echo ('\\''.$OP_MARKETING.'\\',');\r\n                echo ('\\''.$OP_WEBMARKETING.'\\',');\r\n                echo ('\\''.$PAYS.'\\',');\r\n                echo ('\\''.$PROFESSION.'\\',');\r\n                echo ('\\''.$SEED.'\\',');\r\n                echo ('\\''.$SEGMENT.'\\',');\r\n                echo ('\\''.$SOURCE.'\\',');\r\n                echo ('\\''.$SYNCHRO_INSERT.'\\',');\r\n                echo ('\\''.$SYNCHRO_UNJOIN.'\\',');\r\n                echo ('\\''.$SYNCHRO_UPDATE.'\\',');\r\n                echo ('\\''.$TELEPHONE.'\\',');\r\n                echo ('\\''.$TEMP10_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP10_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP11_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP11_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP1_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP1_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP2_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP2_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP3_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP3_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP4_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP4_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP5_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP5_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP6_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP6_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP7_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP7_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP8_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP8_TOPIC.'\\',');\r\n                echo ('\\''.$TEMP9_NBMAX.'\\',');\r\n                echo ('\\''.$TEMP9_TOPIC.'\\',');\r\n                echo ('\\''.$TEMPLATE_TYPE.'\\',');\r\n                echo ('\\''.$UPLOAD_ID.'\\',');\r\n                echo ('\\''.$VILLE.'\\',');\r\n                \r\n                \/* end *\/\r\n                \r\n                echo ('\\''.$ZONE.'\\'');\r\n                \/* very end*\/\r\n                echo (');');\r\n                \r\n                \r\n                echo \"\\n\\n\";\r\n                $i++;\r\n            } \r\n\r\n      }\/\/ EOI  \r\n<\/pre>\n<pre lang=\"sql\">\r\n  INSERT INTO fsb_cpg_opened.member_list_index_full (id, campagne_id, member_id, client_id, emvhbq, emvisp, datejoin, dateunjoin, email, emvcellphone, emvunroutable, hbq_reason, sms_date_unjoin, sms_emvhbq, sms_hbq_reason, firstname, lastname, title, dateofbirth, adresse, annee_naissance, champ_date_1, champ_date_2, champ_date_3, champ_date_4, champ_date_5, champ_num_1, champ_num_2, champ_num_3, champ_num_4, champ_num_5, champ_txt_3, champ_txt_4, champ_txt_5, clienturn, code, codepostal, country, creneau_horaire, date_abo_alert, date_abo_autopromo, date_abo_bestof_obs, date_abo_bestof_week, date_abo_bestof_w_end, date_abo_news, date_demande_modification_prof, date_desabo_alert, date_desabo_autopromo, date_desabo_bestof_obs, date_desabo_bestof_week, date_desabo_bestof_w_end, date_desabo_news, date_envoi_pdm, date_modification_profil, date_modif_news, email_format, email_origine, emvadmin1, emvadmin2, emvadmin3, emvadmin4, emvadmin5, emvdoublon, fai, frequence, gender, heure_envoi, lastactivity, lg, lhe, messageid_pdm, mobiclip, news_menu, optinalert, optinmonfrance, optinpartenaires, optin_actu_afrique, optin_actu_monde, optin_actu_musique, optin_autopromo, optin_bestof_obs, optin_bestof_week, optin_bestof_w_end, optin_mfi, optin_newsletter5, optin_newsletters, optin_offre_partenaire, optin_offre_rfi, op_marketing, op_webmarketing, pays, profession, seed, segment, source, synchro_insert, synchro_unjoin, synchro_update, telephone, temp10_nbmax, temp10_topic, temp11_nbmax, temp11_topic, temp1_nbmax, temp1_topic, temp2_nbmax, temp2_topic, temp3_nbmax, temp3_topic, temp4_nbmax, temp4_topic, temp5_nbmax, temp5_topic, temp6_nbmax, temp6_topic, temp7_nbmax, temp7_topic, temp8_nbmax, temp8_topic, temp9_nbmax, temp9_topic, template_type, upload_id, ville, zone) VALUES(NULL,'1','TT1114079764','9437858932541','1187635315','','','12\/05\/2011','barack.ndlf@lamaisonblanche.eu','','','','','','','Barack','N\\'diang-Le floc\\'h','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','1','1','False','','','','','','','','','','','','','','','','IHH','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');\r\n<\/pre>\n<h4>4. Injecter le contenu et nettoyer la BDD des corruptions li\u00e9es au caract\u00e8re encoding<\/h4>\n<p>Bon disons que vous \u00eates parvenu(e) \u00e0 cr\u00e9er votre requ\u00eate et \u00e0 l&#8217;injecter.<\/p>\n<pre lang=\"sql\">\r\n  -- se connecter \u00e0 MySQL\r\n  \/Applications\/MAMP\/Library\/bin\/mysql -u root -p\r\n\r\n  -- Utiliser \u00e0 la BDD\r\n  USE rfi_cpg_opened;\r\n  \r\n  -- Vider la table \"aucazou\"\r\n  TRUNCATE TABLE member_list_index_full;\r\n  \r\n  -- Injecter le fichier .sql\r\n  SOURCE \/path_to_your_sql_file\/insert_full_from_xml.sql;\r\n<\/pre>\n<p>Vous pouvez d\u00e9sormais nettoyer les probl\u00e8mes li\u00e9s au mauvais encodage des caract\u00e8res : pays, title, firstname, lastname, profession.<\/p>\n<ul>\n<li><b>Exemple simple de nettoyage du champ <code>pays<\/code><\/b>\n<pre lang=\"sql\">\r\n  update `member_list_index_full` set `pays` = replace(`pays` ,'\u00c3\u00a8','\u00e8');\r\n<\/pre>\n<\/li>\n<li><b>Exemple plus avanc\u00e9 de nettoyage du champ <code>ville<\/code><\/b>\n<pre lang=\"sql\">\r\n--- nettoyage du champ ville\r\nupdate `member_list_index_full` set ville = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(ville,'&uuml;','\u00fc'),'&ocirc;','\u00f4'),'&oacute;','\u00f3'),'&ecirc;','\u00ea'),'&agrave;','\u00e0'),'&atilde;','\u00e3'),'&Uuml;','\u00dc'),'&Ocirc;','\u00d4'),'&Oacute;','\u00d3'),'&Ecirc;','\u00ca'),'&Agrave;','\u00c0'),'&Atilde;','\u00c3'),'&Ccedil;','\u00c7'),'&Uacute;','\u00da'),'&Otilde;','\u00d5'),'&Iacute;','\u00cd'),'&Iacute;','\u00cd'),'&Eacute;','\u00c9'),'&Acirc;','\u00c2'),'&Aacute;','\u00c1'),'&ccedil;','\u00e7'),'&uacute;','\u00fa'),'&otilde;','\u00f5'),'&iacute;','\u00ed'),'&eacute;','\u00e9'),'&acirc;','\u00e2'),'&aacute;','\u00e1'),'&atilde;','\u00e3'),'&ccedil;','\u00e7'),'\u00c3 ','\u00e0'),'\u00c3 ','\u00e0'),'\u00c2\u00ba','\u00ba'),'\u00c2\u00aa','\u00aa'),'\u00c3\u00a7','\u00e7'),'\u00e2\u20ac\u201c','\u2013'),'\u00c3\u00b3','\u00f3'),'\u00c3\u00a9','\u00e9'),'\u00c3\u00a1','\u00e1'),'\u00c3\u00aa','\u00ea'),'\u00c3\u00a3','\u00e3'),'\u00c3\u00a2','\u00e2'),'\u00c3\u00ad','\u00ed'),'\u00c3\u00b5','\u00f5'),'\u00c3\u02dc','\u00d8'),'\u00e2\u20ac\u00a2','-'),'\u00c3\u00ba','\u00fa'),'\u00c3 ','\u00c0'),'\u00c3\u0192','\u00c3'),'\u00c3\u2021','\u00c7'),'\u00e2\u20ac','\"'),'\u00e2\u20ac\u0153','\"'),'\u00c3\u2030','\u00c9');\r\n<\/pre>\n<\/li>\n<\/ul>\n<p><b>Conclusion : Il est certain que c&#8217;est un peu fastidieux comme proc\u00e9dure mais c&#8217;est parfois un mal n\u00e9cessaire pour pouvoir exploiter des donn\u00e9es trop longtemps endormies.<\/b><\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>SimpleXML Manipulation XML<br \/><a href=\"http:\/\/php.net\/manual\/fr\/book.simplexml.php\" target=\"_blank\">http:\/\/php.net\/manual\/fr\/book.simplexml.php<\/a><\/li>\n<li>Introduction To SimpleXML With PHP<br \/><a href=\"http:\/\/www.phpro.org\/tutorials\/Introduction-To-SimpleXML-With-PHP.html\" target=\"_blank\">http:\/\/www.phpro.org\/tutorials\/Introduction-To-SimpleXML-With-PHP.html<\/a><\/li>\n<li>PHP SimpleXML par w3schools.com<br \/><a href=\"http:\/\/www.w3schools.com\/php\/php_xml_simplexml.asp\" target=\"_blank\">http:\/\/www.w3schools.com\/php\/php_xml_simplexml.asp<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Comme dans le pr\u00e9c\u00e8dent billet, un autre petit billet sur la recherche d&#8217;une solution rapide et peu co\u00fbteuse pour r\u00e9cup\u00e9rer des donn\u00e9es \u00e9parses afin de&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2014\/04\/xpath-xml-bigdata-rationnaliser-ces-donnees-manipulation-du-xml-a-laide-simplexml\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">XPath, XML, BigData &#8211; Rationnaliser ces donn\u00e9es, manipulation  du XML \u00e0 l&#8217;aide SimpleXML<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":10305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Rationnalisez vos donn\u00e9es XML avec SimpleXML. Manipulez fichiers XML, g\u00e9n\u00e9rez des queries et injectez-les dans MySQL pour des analyses efficaces.","bf_ai_og_title":"Rationnaliser XML avec SimpleXML","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3441,3444,3447,3449,3435],"tags":[2084,3493,2085,609,468,2211,90,2089],"class_list":["post-10303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-analytics","category-programming-databases","category-technology-trends","category-tutorials-how-to","category-web-development","tag-bigdata","tag-clip","tag-dette","tag-donnees","tag-marketing","tag-mysql","tag-xml","tag-xpath"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-2Gb","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2014\/04\/xml_transfert_xpath_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=10303"}],"version-history":[{"count":4,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10303\/revisions"}],"predecessor-version":[{"id":10308,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/10303\/revisions\/10308"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/10305"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=10303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=10303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=10303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}