Insertion d'un fichier plat

Eléphant du PHP | 94 Messages

06 juil. 2006, 11:38

Bonjour

Je dispose d'un fichier texte sans délimiteur de champ.
J'ai les positions de chaque champ.
Comment faire pour importer le contenu de ce fichier dans mysql ? Sachant que je dois importer ce fichier régulièrement avec une routine php.

Pour le moment je bidouille pour transformer mon fichier en csv (en utilisant Access) mais j'aimerais éviter l'usage d'access.

Peut on importer directement un fichier sans délimiteur ?
Si non, comment importer les données ? Faut il intégrer des délimiteurs ?
rspir

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2006, 11:44

Si tu n'as pas de délimiteur mais que tu disposes des positions des valeurs, je pense que le traitement PHP est la seule solution qu'il te reste :

Code : Tout sélectionner

parcours ton fichier Pour chaque ligne Récupérer les différentes valeurs selon la position Construire la requete d'insertion Executer la requete fin pour
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 94 Messages

06 juil. 2006, 12:28

Bonjour

et merci pour ces premières indications.
Peux tu juste m'indiquer les commandes à utiliser pour parcourir le fichier, et pour récupérer les différentes valeurs pour chaque ligne ?
rspir

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2006, 12:32

Pour parcourir un fichier, il y a ça :
http://phpdebutant.org/article58.php
Regarde aussi file()

Pour récupérer les valeurs dans le fichier selon leur position, tu peut utiliser
substr()
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 94 Messages

10 juil. 2006, 15:18

Je m'en suis sorti avec le code :
<?php

$content=file("ag.txt");

foreach($content as $num=>$ligne)
{
   $var1=substr($ligne,0,8);
   $var2=substr($ligne,8,8);
   $var3=substr($ligne,16,17);
   $var4=substr($ligne,33,8);
   $var5=substr($ligne,41,128);
   $var6=substr($ligne,169,8);
   $var7=substr($ligne,177,128);
   $var8=substr($ligne,305,32);
   $var9=substr($ligne,337,5);
   $var10=substr($ligne,342,32);
   $var11=substr($ligne,374,32);
   $var12=substr($ligne,406,3);
   $var13=substr($ligne,409,3);
   $var14=substr($ligne,412,7);
   $var15=substr($ligne,419,112);
   $var16=substr($ligne,531,7);
   $var17=substr($ligne,538,112);
   $var18=substr($ligne,650,1);
   $var19=substr($ligne,651,1);

}

?>
En effet, je n'arrive rien avec le fget. Mais avec file(), c'est passé quasi tout de suite.
rspir