Page 1 sur 1

Insertion d'un fichier plat

Posté : 06 juil. 2006, 11:38
par rspir
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 ?

Posté : 06 juil. 2006, 11:44
par zeus
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

Posté : 06 juil. 2006, 12:28
par rspir
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 ?

Posté : 06 juil. 2006, 12:32
par zeus
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()

Posté : 10 juil. 2006, 15:18
par rspir
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.