IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Import d'un fichier sans saut de ligne


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut Import d'un fichier sans saut de ligne
    Bonjour,

    Mon application tourne en php/mysql.

    J'utilise la fonction sql LOAD DATA INFILE pour récupérer le contenu de fichiers ascii.

    Je viens de tomber sur un problème : on m'envoie un fichier ascii à champs fixes. Tout est ok...sauf qu'il n'y a pas de caractère de fin de ligne : tous les enregistrements (120 caractères chacun) sont sur la même ligne (la seule).

    Je n'ai pas l'impression qu'il y ait un paramètre de LOAD DATA INFILE permettant d'indiquer la taille de l'enregistrement.

    Que faire ?

    Merci pour toute info.

    Philippe

  2. #2
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Au sein de ton application PHP, découper ton flux de données (contenu dans ton fichier) par tranche de 120 caractères et ensuite exécuter ton ordre SQL.

    Ai je bien compris ton problème ?

  3. #3
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Oui, ou bien insérer dans le fichier un saut de ligne tous les 120 caractères pour pouvoir ensuite lire ce fichier avec load infile.

    Et ça, je ne sais pas le faire.

    Philippe

  4. #4
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Voici un exemple d'usage de la fonction chunk_split( ).

    http://fr2.php.net/manual/fr/function.chunk-split.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $body = "12345678901234567890123456789012345678901234567890";
    $chunklen = 10;
    $end = "\n";
     
    $ns = chunk_split( $body  ,  $chunklen  , $end  );
     
    echo "$ns";
    Il te suffit d'y intégrer ton flux de données.

  5. #5
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Un truc plus clean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            $length = 120;
            $handle = fopen($_SERVER['argv'][1], "rb");
            while (!feof($handle)) {
                    $contents = fread($handle, $length);
                    echo "$contents\n";
            }
            fclose($handle);

  6. #6
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Super,

    Et saurais-tu comment, au lieu de faire echo, copier chaque "$contents\n" dans un nouveau fichier ?

    Merci encore pour ton aide. Je ne suis pas habitué à travailler sur les fichiers, mais il faut que je m'y mette.

    Au fait, sais tu s'il est possible, à partir d'une page php exécutée sur mon site internet :
    - de lire un fichier situé sur le disque dur local du pc se connectant à mon site,
    - d'accéder via odbc à une base de donnée présente sur ce disque dur local.

    A bientôt

    Phil

Discussions similaires

  1. Recherche des pattern dans un fichier sans saut de ligne
    Par erox44 dans le forum Shell et commandes POSIX
    Réponses: 5
    Dernier message: 28/01/2013, 21h58
  2. Réponses: 1
    Dernier message: 24/04/2008, 09h07
  3. Réponses: 2
    Dernier message: 05/04/2007, 09h39
  4. [Tomcat Bean IO] Ecriture sur Fichier et Saut de Ligne
    Par zaoueche dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 25/01/2006, 15h02
  5. [Etat] Afficher sans saut de ligne
    Par acceso dans le forum IHM
    Réponses: 6
    Dernier message: 03/01/2006, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo