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

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    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 actif
    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
    Points : 291
    Points
    291
    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 régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    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 actif
    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
    Points : 291
    Points
    291
    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 actif
    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
    Points : 291
    Points
    291
    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 régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    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

  7. #7
    Membre actif
    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
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Pgs Voir le message
    Et saurais-tu comment, au lieu de faire echo, copier chaque "$contents\n" dans un nouveau fichier ?
    Tu rediriges la sortie standard de ta commande vers un fichier du genre :
    tacommande > tonfichierdesortie

    Citation Envoyé par Pgs Voir le message
    Merci encore pour ton aide. Je ne suis pas habitué à travailler sur les fichiers, mais il faut que je m'y mette.
    C'est une bonne chose, tu peux commencer à lire les tutoriels et autres documentations
    proposés sur ce site. http://php.developpez.com/

    Citation Envoyé par Pgs Voir le message
    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,
    Directement sur le disque tu ne peux pas, par contre via un formulaire tu peux demander à l'utilisateur de te transférer son fichier vers ton serveur (passage obligatoire et heureusement )

    Tu devrai trouver de l'aide en suivant le lien indiqué précédemment.


    Citation Envoyé par Pgs Voir le message
    - d'accéder via odbc à une base de donnée présente sur ce disque dur local.
    A partir de ton application PHP présente sur ton serveur, NON.

    ... Sauf si l'utilisateur t'en donne l'autorisation et qu'il se positionne
    en mode serveur pour sa base.

    Que veux tu faire exactement ? Tes questions sont bizarres

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    "bizarres"... mince, je me croyais assez normal...

    Mon site sert de synthèse de données présentes en local chez plusieurs utilisateurs distants. Pour l'instant, je leur ai développé en C++ une interface qui, sur leur poste, se connecte à leur base et alimentent celle de mon site.

    Je souhaite supprimer le recours à cette interface car :
    - même si elle est très simple, l'utilisateur doit penser à la lancer,
    - elle nécessite une maintenance (je dois envoyer à tous une mise à jour lorsque je fais certains changements de structure dans ma base).

    A bientôt

    Philippe

  9. #9
    Membre actif
    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
    Points : 291
    Points
    291
    Par défaut
    Qu'est ce que tu utilises comme BD sur les postes utilisateurs distants ?

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    - sql serveur,
    - mysql,
    - oracle,
    - et...access.

    Philippe

  11. #11
    Membre actif
    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
    Points : 291
    Points
    291
    Par défaut
    Mise à par pour access , as tu la possibilité de te connecter directement sur les SGBDr de tes clients ?

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Non

    Philippe

  13. #13
    Membre actif
    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
    Points : 291
    Points
    291
    Par défaut
    Je reviens un peu tard, navré.

    Après réflexion je ne vois pas beaucoup de solutions.
    Vraiment dommage que tu ne puisses pas te connecter directement sur les SGBDr de tes clients pour faire un "dump" des données.

    Il te reste à voir si tu peux connecter les SGBDr de tes clients vers ton SGBDr ou à leur proposer un site Internet vers lequel il pourront déposer leurs données. (Mais je crois que cette dernière solution tu l'as déjà mise en oeuvre).

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