#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini TXT structures ID, ANN et TXT (*) => ID structure IDentité seulement => BI structure BIlans uniquement -d:database Base de données (si absent : modelisation) -t:nom_table Table de la base de données (si absent : nom du fichier sans l'extension) (*): Valeurs par défaut ! "); $f=0; $tabStructures=array('ID', 'ANN', 'TXT'); for ($i=1; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 's': if (trim(substr($argv[$i],3,3))=='ID') $tabStructures=array('ID'); if (trim(substr($argv[$i],3,3))=='BI') $tabStructures=array('ID', 'BI'); elseif (substr($argv[$i],3,3)=='TXT') $tabStructures=array('ID', 'ANN', 'TXT'); break; case 'd': $db_name=trim(substr($argv[$i],3)); break; case 't': $table=trim(substr($argv[$i],3)); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } else { $tabFichier[$f]=$argv[$i]; $f++; } } if (!isset($table) || $table=='') $nom_table=str_replace('.csv', '', str_replace('.txt', '', basename($tabFichier[0]))); if ($db_name=='') $db_name='modelisation'; $iDb=new WDB($db_name); echo date ('Y/m/d - H:i:s') . " - Début du traitement\r\n"; $nbFiches=$nbLignesTOT=$nbLignesID=$nbLignesID_er=$nbLignesID_ok=$nbLignesBI=0; $tabDataToInsert=$tab_ret=array(); $tab_ret_pre=array(); for ($f=0; isset($tabFichier[$f]); $f++) { // Boucle sur l'ensemble des fichiers à traiter if ($f>0) echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier ". $fichier_csv .", $nbLignes lignes traitées !\n"; $nbLignes=0; $fichier_csv=$tabFichier[$f]; $comment='Chargement de fichier SO'; $fp=fopen($fichier_csv, 'r'); if (!$fp) { echo date ('Y/m/d - H:i:s')." - Impossible d'ouvrir le fichier : ".$fichier_csv." !\n"; echo date ('Y/m/d - H:i:s') . " - Fin du traitement\n"; exit(); } echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier ". $fichier_csv ."...\n"; flush(); while (($ligne = fgets($fp, 4096)) !== FALSE) { $tab_ret_pre=$tab_ret; //Données communes aux 3 types de fichier $tab_ret['SONABO'] =trim(substr($ligne, 0, 9)); // N°ABONNE (I) ******************** $tab_ret['SONUME'] =trim(substr($ligne, 9, 9)); // N°ENTREPRISE (I) * FICHE COMPLETE * $tab_ret['SONUS'] =trim(substr($ligne, 18, 9)); // N°UFS (I) * +EXTENSION INSEE * SONUS_V $tab_ret['SOANN'] =trim(substr($ligne, 27, 9)); // N° ANNONCE (I) ******************** $tab_ret['SORCS'] =trim(substr($ligne, 36, 14)); // N°SIRET (I) $tab_ret['SIREN'] =substr($tab_ret['SORCS'],0,9); $tab_ret['NIC'] =substr($tab_ret['SORCS'],9,5); $tab_ret['SOPRD'] =trim(substr($ligne, 50, 2)); // CODE PRODUIT (I) SOPRD_N $tab_ret['SOSEQ'] =trim(substr($ligne, 52, 5)); // SEQUENCE DANS GROUPE(I) SOSEQ_N $tab_ret['SODTEN'] =trim(substr($ligne, 57, 8)); // DATE ENVOI (I) AAAAMMJJ SODTEN_D $Sotenr =trim(substr($ligne, 65, 1)); $tab_ret['SOTENR'] =$Sotenr; // CODE ENREGISTREMENT (I) $Sotyp =trim(substr($ligne, 66, 3)); $tab_ret['SOTYP'] =$Sotyp; // TYPE STRUCTURE (I) "ID " SOTYP_V $tab_ret['SOCONF'] =trim(substr($ligne, 69, 1)); // Code confirmé (I) $tab_ret['SOREFC'] =trim(substr($ligne, 70, 30)); // REFERENCE CLIENT (I) SOREFC_X $tab_ret['SOORIG'] =trim(substr($ligne, 100, 1)); // Code Origine BIL (S) $tabLigne[$Sotyp]++; if ($Sotyp=='ID' && in_array($Sotyp, $tabStructures)) { if (count($tabStructures)==1) { $tabToInsert=array_merge(array('DateAjout'=>TODAY),$tab_ret_pre, $tab_retID); //print_r($tabToInsert); $ret=$iDb->insert($table, $tabToInsert); if (!$ret){ $nbLignesID_er++; print_r($tabToInsert); $iDb->insert($table, $tabToInsert, true); } else $nbLignesID_ok++; $nbLignesID++; //echo "Ligne $nbLignes : ". memory_get_usage() . " octets\n"; //if ($nbFiches==100) die(); } elseif (in_array('BI', $tabStructures)) { if ($nbLignesTOT>0) $ret=$iDb->insert('bilans2', $tabBilan, true); //echo 'Bilan '. $tabBilan['siren'] .' - '. $tabBilan['dateExercice'] . " inséré !\n"; $tabBilan['postes']=''; } elseif (isset($tab_ret_pre['SOANN']) && $tab_ret_pre['SOANN']<>'') { $tabToInsert=array_merge(array('DateAjout'=>TODAY),$tab_ret_pre, $tab_retID, $tabDataToInsert); //print_r($tabToInsert); $ret=$iDb->insert($table, $tabToInsert); //echo "Ligne $nbLignes : ". memory_get_usage() . " octets\n"; //if ($nbFiches==100) die(); $tabDataToInsert['ann']=''; } $tab_retID=array( 'SOSDTX'=>trim(substr($ligne, 101, 1)), // INDIC. QUALITE (S) 'SOMAJ' =>trim(substr($ligne, 102, 9)), // TEMOIN DE MAJ (S) SOMAJ_N 'SONOM' =>trim(substr($ligne, 111, 60)), // RAISON SOCIALE p/1 (I) (INSEE=40) SONOM_X 'SONOM2'=>trim(substr($ligne, 171, 30)), // RAISON SOCIALE p/2 (I) (INSEE=BLANC) SONOM_N 'SOSIG' =>trim(substr($ligne, 201, 30)), // SIGLE (S) (INSEE=20) SOSIG_N 'SOENS' =>trim(substr($ligne, 231, 60)), // ENSEIGNE (S) (INSEE=40) SOENS_X 'SONRU' =>trim(substr($ligne, 291, 4)), // N°DS LA RUE (S) 'SOBTQ' =>trim(substr($ligne, 295, 1)), // B=BIS T=TER Q=QUAT. (S) 'SORUE' =>trim(substr($ligne, 296, 33)), // NOM DE LA RUE (S) 'SOCOM' =>trim(substr($ligne, 329, 32)), // LIBELLE COMMUNE (I) 'SOCP' =>trim(substr($ligne, 361, 5)), // CODE POSTAL (I) SOCP_N 'SOCPLA'=>trim(substr($ligne, 366, 30)), // COMPLEMENT ADRESSE (S) SOCPLA_N 'SODTCT'=>trim(substr($ligne, 396, 8)), // DATE CREATION ENTREP (S) AAAAMMJJ DTCREE_D 'SOSTAE'=>trim(substr($ligne, 404, 1)), // STATUT ETABLISSEMENT (S) Table INS 'SOCJEN'=>trim(substr($ligne, 405, 4)), // CATEG JURIDIQUE (S) Table INC SOCJEN_X 'SOTSEX'=>trim(substr($ligne, 409, 1)), // SEXE SI PP (S) Table IMF 'SONBET'=>trim(substr($ligne, 410, 4)), // NOMBRE ETAB. (S) NBRETE_C 'SOAPET'=>trim(substr($ligne, 414, 4)), // NAF ENTREPRISE (S) Table APE 'SOAPFT'=>trim(substr($ligne, 418, 4)), // CODE "FAMILLE" ENTR. (C) Table APY SOAPFT_N 'SOAPEE'=>trim(substr($ligne, 422, 4)), // NAF ETABLISSEMT (S) Table APE 'SOAPFE'=>trim(substr($ligne, 426, 4)), // CODE "FAMILLE" ETAB. (C) Table APY SOAPFE_N 'SORLJ' =>trim(substr($ligne, 430, 1)), // Proc.Collective (C) "O"=RLJ SORLJ_N 'SOCAPM'=>trim(substr($ligne, 431, 2)), // MONNAIE (C) Table BDV SOCAPM_N 'SOCAPI'=>trim(substr($ligne, 433, 13)), // MONTANT CAPITAL (C) CAPITE_X 'SOEFF' =>trim(substr($ligne, 446, 7)), // EFFECTIF (+Ext) blanc=non précisé SOEFF_N 'SORCE' =>trim(substr($ligne, 453, 9)), // N°RC (C) RCE_X 'SOETEL'=>trim(substr($ligne, 462, 10)), // TELEPHONE SOURCE BIL (S) 'SOEFAX'=>trim(substr($ligne, 472, 10)), // FAX SOURCE BIL (S) 'SOEWEB'=>trim(substr($ligne, 482, 40)), // SITE WEB SOURCE BIL (S) non encore renseigné SOEWEB_N 'SOEDRQ'=>trim(substr($ligne, 522, 3)), // QUALITE DIRIGEANT (C) source BIL 'SOEDRN'=>trim(substr($ligne, 525, 60)), // NOM-prénom DIRIGEANT (C) source BIL SOEDRN_X 'SDEDRD'=>trim(substr($ligne, 585, 8)), // DATE NAISSANCE DIRIG (C) AAAAMMJJ SOEDRD_D 'SOEDRL'=>trim(substr($ligne, 593, 35)), // LIEU NAISSANCE DIRIG (C) source BIL SOEDRL_N 'SORSNO'=>trim(substr($ligne, 628, 2)), // NOTE SUR 20 (+sc) BLANC=PAS DE NOTE 'SORSEC'=>trim(substr($ligne, 630, 7)), // ENCOURS EN KILO (+sc) BLANC=PAS D ENCOURS 'SORSCP'=>trim(substr($ligne, 637, 1)), // CODE PAIEMENT (+sc) Table S53 'SORSSF'=>trim(substr($ligne, 638, 1)), // CODE SITU FINANCERE (+sc) Table S53 'SORSCA'=>trim(substr($ligne, 639, 1)), // CODE AVIS (+sc) Table S53 'SORSMO'=>trim(substr($ligne, 640, 3)), // MONNAIE LIVRAISON ENCOURS (+sc) Table BDV 'SOSICO'=>trim(substr($ligne, 643, 6)), // CODE SICOVAM (C) STE COTEE EN BOURSE SOSICO_N 'SOTYPM'=>trim(substr($ligne, 649, 2)), // TYPE DE MARCHE (C) STE COTEE EN BOURSE SOTYPM_N 'SOISIN'=>trim(substr($ligne, 651, 12)), // CODE ISIN (C) STE COTEE EN BOURSE SOISIN_N 'SOIDR1'=>trim(substr($ligne, 663, 41)), // réserve, non encore renseigné 'SONICC'=>trim(substr($ligne, 704, 5)), // NIC SOURCE/CIBLE (C)(+Ext) TRANSFERT ADRESSE SONICC_N 'SODCAP'=>trim(substr($ligne, 709, 8)), // DATE MAJ CAPITAL (C) AAAAMMJJ SODCAP_D 'SOCAPO'=>trim(substr($ligne, 717, 3)), // CAPITAL MONNAIE ORI (C) Table BDV 'SOCAPL'=>trim(substr($ligne, 720, 3)), // CAPITAL MONNAIE LIV (C) Table BDV 'SODTCE'=>trim(substr($ligne, 723, 8)), // DATE CREAT ETAB (+Ext) AAAAMMJJ SODTCE_D 'SOORIC'=>trim(substr($ligne, 731, 1)), // ORI.CREATION ENTREP (+Ext) Table INJ SOORIC_N 'SOCLAT'=>trim(substr($ligne, 732, 2)), // TR.EFFECTIF ENTREP(C)(+Ext*)Table INL 'CLAE' =>trim(substr($ligne, 734,2)), //TR.EFFECTIF ETAB(+Ext)TableINL 'SOA40T'=>trim(substr($ligne, 736,2)), //NAP 40 ENTREP(+Ext)TableA40 'SOA40E'=>trim(substr($ligne, 738,2)), //NAP 40 ETAB(+Ext)TableA40 'SOEACA'=>trim(substr($ligne, 740,5)), //ACT.ARTISANALE ETAB(+Ext)TableARA 'SOEMDT'=>trim(substr($ligne, 745,1)), //MODALITE ACT. ENTREP(+Ext)TableIMO 'SOEMDE'=>trim(substr($ligne, 746,1)), //MODALITE ACT. ETAB(+Ext)TableIMO 'SOERGS'=>trim(substr($ligne, 747,2)), //CODE REGION ENTREP(C)(+Ext*)TableINGSOERGS_N 'SOERGE'=>trim(substr($ligne, 749,2)), //CODE REGION ETAB(C)(+Ext*)TableING 'SOEDPS'=>trim(substr($ligne, 751,2)), //DEPARTEMENT SIEGE(S) (+Ext*)DPSIE_C 'SOELCS'=>trim(substr($ligne, 753,3)), //CODE LOCALITE SIEGE(S) (+Ext*) 'SOEDPE'=>trim(substr($ligne, 756,2)), //DEPARTEMENT ETAB(S) (+Ext*) 'SOELCE'=>trim(substr($ligne, 758,3)), //CODE LOCALITE ETAB(S) (+Ext*)SOLIN_C 'SOARDO'=>trim(substr($ligne, 761,1)), //DEP.OUTRE MER(+Ext) NRTableIDOSOARDO_N 'SOARD' =>trim(substr($ligne, 762,1)), //ARRONDISSEMENT(+Ext) 'SOCANO'=>trim(substr($ligne, 763,1)), //DEP.OUTRE MER(+Ext) NRTableIDOSOCANO_N 'SOCAN' =>trim(substr($ligne, 764,2)), //CANTON(+Ext) 'SOILOT'=>trim(substr($ligne, 766,8)), //CODE ILOT(+Ext) NRSOILOT_N 'SOTZEM'=>trim(substr($ligne, 774,2)), //ZONE EMPLOI ETAB(+Ext)TableINZ 'SOTTCO'=>trim(substr($ligne, 776,2)), //TRANCHE COMMUNE ETAB(+Ext)TableICD 'SOTDPU'=>trim(substr($ligne, 778,2)), //DEP UNITE.URB ETAB(+Ext)SOTDPU_N 'SOTTLU'=>trim(substr($ligne, 780,1)), //TAILLE UN.URB ETAB(+Ext)TableICUSOTTLU_N 'SOTUNU'=>trim(substr($ligne, 781,2)), //UNITE URBAINE ETAB(+Ext)SOTUNU_X 'SOTRIV'=>trim(substr($ligne, 783,5)), //CODE RIVOLI ETAB(+Ext)SOTRIV_X 'SOTRGP'=>trim(substr($ligne, 788,2)), //PPALE REGION ENTREP(+Ext)TableING 'SOTMON'=>trim(substr($ligne, 790,1)), //MONOREGIONALITE(+Ext)TableIMR 'SOTMOA'=>trim(substr($ligne, 791,1)), //MONOACTIVITE(+Ext)TableIMPSOTMOA_N 'SOECA' =>trim(substr($ligne, 792,1)), //CODE TRANCHE CA(C)(+Ext*)TableINTSOECA_X 'SOECAX'=>trim(substr($ligne, 793,1)), //TRANCHE PART EXPORT(C)(+Ext*)TableINPSOECAX_X 'SOTRPE'=>trim(substr($ligne, 794,1)), //REPERTOIRE ENT ETAT(+Ext)TableIEE 'SOORDI'=>trim(substr($ligne, 795,1)), //ENTREPRISE ORDINAIRE(+Ext)TableIEOSOORDI_N 'SOENAT'=>trim(substr($ligne, 796,2)), //CODE NATURE ETAB(+Ext)TableINN 'SOSINE'=>trim(substr($ligne, 798,2)), //Type Exploitation(C)(+Ext*)TableINE ); $nbFiches++; } elseif ($Sotyp=='ANN' && in_array($Sotyp,$tabStructures)) { $tabDataToInsert['codjou']=substr($ligne, 101, 3); $tabDataToInsert['datpar']=substr($ligne, 104, 8); $tabDataToInsert['PagJou']=substr($ligne, 112, 5); $tabDataToInsert['codevt']=substr($ligne, 117, 2); $tabDataToInsert['codpar']=substr($ligne, 119, 2); $tabDataToInsert['numannjou']=substr($ligne, 121, 6); $tabDataToInsert['roleEnt']=substr($ligne, 127, 1); $tabDataToInsert['libann']=substr($ligne, 128, 5); $tabDataToInsert['codtri']=substr($ligne, 133, 6); $tabDataToInsert['numbod']=substr($ligne, 139, 3); $tabDataToInsert['dateEvnt']=substr($ligne,142,8); $tabDataToInsert['dateEffet']=substr($ligne,150,8); $tabDataToInsert['dateCess']=substr($ligne,158,8); $tabDataToInsert['monnaie']=substr($ligne,166,2); $tabDataToInsert['montantVente']=substr($ligne, 168, 11); $tabDataToInsert['particularite']= substr($ligne, 179, 33); $tabDataToInsert['codeRubrique']=substr($ligne,212,4); $tabDataToInsert['codeLibInj']=substr($ligne,216,6); $tabDataToInsert['codSyn']=substr($ligne,222,5); $tabDataToInsert['typeSyn']=substr($ligne,227,1); $tabDataToInsert['idSyn']=trim(substr($ligne,228,7)); $tabDataToInsert['nomsyn']=trim(substr($ligne, 235, 30)); $tabDataToInsert['numruesyn']=trim(substr($ligne, 265, 4)); $tabDataToInsert['compruessyn']=trim(substr($ligne,269,1)); $tabDataToInsert['typvoisyn']=trim(substr($ligne,270 , 3)); $tabDataToInsert['ruesyn']=trim(substr($ligne, 273, 33)); $tabDataToInsert['liesyn']=trim(substr($ligne, 306, 32)); $tabDataToInsert['CdpSyn']=trim(substr($ligne, 338, 5)); $tabDataToInsert['vilsyn']=trim(substr($ligne, 343, 32)); $tabDataToInsert['telsyn']=trim(substr($ligne, 375, 10)); $tabDataToInsert['codAdm']=substr($ligne,385,5); $tabDataToInsert['typeAdm']=substr($ligne,390,1); $tabDataToInsert['idAdm']=trim(substr($ligne,391,7)); $tabDataToInsert['nomadm']=trim(substr($ligne, 398, 30)); $tabDataToInsert['numrueadm']=trim(substr($ligne, 428, 4)); $tabDataToInsert['compruesadm']=trim(substr($ligne,432,1)); $tabDataToInsert['typvoiadm']=trim(substr($ligne,433 , 3)); $tabDataToInsert['ruesadm']=trim(substr($ligne, 436, 33)); $tabDataToInsert['lieadm']=trim(substr($ligne, 469, 32)); $tabDataToInsert['Cdpadm']=trim(substr($ligne, 501, 5)); $tabDataToInsert['viladm']=trim(substr($ligne, 506, 32)); $tabDataToInsert['teladm']=trim(substr($ligne, 538, 10)); } elseif ($Sotyp=='TXT' && in_array($Sotyp,$tabStructures)) { $tabDataToInsert['codjou']=substr($ligne, 101, 3); $tabDataToInsert['datpar']=substr($ligne, 104, 8); $tabDataToInsert['PagJou']=substr($ligne, 112, 5); $tabDataToInsert['codevt']=substr($ligne, 117, 2); $tabDataToInsert['codpar']=substr($ligne, 119, 2); $tabDataToInsert['numannjou']=substr($ligne, 121, 6); $tabDataToInsert['roleEnt']=substr($ligne, 127, 1); $tabDataToInsert['typeAnnonce']=substr($ligne,128,1); $tabDataToInsert['ann'].=chop(substr($ligne, 129, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 169, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 209, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 249, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 289, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 329, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 369, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 409, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 449, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 489, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 529, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 569, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 609, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 649, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 689, 40)).' '; $tabDataToInsert['ann'].=chop(substr($ligne, 729, 40)).' '; } elseif ($Sotyp=='BI' && in_array($Sotyp,$tabStructures)) { $tabBilan['siren'] =trim(substr($ligne, 36, 9)); $tabBilan['dateProvPartenaire'] =trim(substr($ligne, 57, 8)); // SSAAMMJJ $tabBilan['dateExercice'] =trim(substr($ligne, 101, 8)); // SSAAMMJJ $tabBilan['dateExercicePre'] =trim(substr($ligne, 109, 8)); // SSAAMMJJ $tabBilan['dureeExercice'] =trim(substr($ligne, 117, 2)); $tabBilan['dureeExercicePre'] =trim(substr($ligne, 119, 2)); $tabBilan['monnaie'] =trim(substr($ligne, 121, 2)); $tabBilan['typeBilan'] =trim(substr($ligne, 123, 1)); // C = Bilan consolidé $tabBilan['monnaieOrigine'] =trim(substr($ligne, 793, 3)); $tabBilan['unite'] =trim(substr($ligne, 796, 1)); for ($j=0; $j<30; $j++) { $code =rtrim(substr($ligne, 124+$j*20, 4)); if ($code!='') { $colonneLiasse=(int)substr($code,2,1); $signe =substr($ligne, 128+$j*20, 1); $valeur =(double)substr($ligne, 129+$j*20, 15); if ($signe=='-') $valeur*=-1; $tabBilan['postes'].="$code=$valeur;"; } } $nbLignesBI++; // print_r($tabBilan); } $nbLignes++; $nbLignesTOT++; } } echo date ('Y/m/d - H:i:s') . " - Nombre de lignes Identité traitées = $nbLignesID !\n"; print_r($tabLigne); echo date ('Y/m/d - H:i:s') . " - Fin du traitement du fichier $fichier_csv, $nbLignes lignes traitées !\n"; echo date ('Y/m/d - H:i:s') . " - Fin du traitement : $nbLignesTOT lignes traitées au total !\r\n"; echo date ('Y/m/d - H:i:s') . " - Fin du traitement\r\n\r\n"; exit(); function ecrireFichier($fichier, $texte){ $fp = fopen($fichier, "a"); fwrite($fp, $texte."\r\n"); fclose ($fp); } ?>