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

PostgreSQL Discussion :

Import TXT : 2 lignes d'en-tête et sauts de ligne intempestifs [9.2]


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Import TXT : 2 lignes d'en-tête et sauts de ligne intempestifs
    Bonjour à tous,

    Quelques infos pratiques avant de commencer (je ne sais pas si toutes les infos seront utiles)

    OS : Windows 7 (64 bits)
    Processeur : Intel Core i7
    RAM : 12 Go
    Interface d'utilisation de PostGreSQL 9.3 : pgAdmin III
    Forme d'utilisation de PostGreSQL : Utilisation en local uniquement pour du SQL
    Niveau en SQL : Novice - J'ai quand même les notions de base

    Question n°1 :

    Est-il possible d'importer un fichier TXT contenant 2 lignes d'en-tête (cf. pièce-jointe ci-dessous) ?

    exemple_1.txt

    Nom : Exemple_1.jpg
Affichages : 444
Taille : 249,3 Ko

    Je sais qu'il est possible d'importer un fichier TXT en précisant qu'il y a une ligne d'en-tête via ce type de requête par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE exemple_1
    (
    ID integer,
    NOM text,
    VILLE text,
    DEPT integer,
    X integer,
    Y integer,
    COMMENT text,
    DATE text,
    MAJ text
    );
     
    set client_encoding to 'LATIN1';
     
    COPY exemple_1 FROM 'D:/Programmes/PostgreSQL/9.3/data/upload/exemple_1.txt' with (format csv, delimiter E'\t', header);
    Mais en cherchant sur le net, je n'ai pas trouvé le moyen de paramétrer l'import pour qu'il commence à partir d'une certaine ligne, la troisième ligne dans mon cas. Pensez-vous que cela soit possible ?

    Bien sur, l'une des solutions serait de supprimer la ligne directement dans le fichier TXT, mais je dois importer des fichiers qui font parfois plus de 500 Mo. Et c'est quasiment impossible de modifier de tels fichiers via un éditeur de texte tel que Notepad...

    Question n°2 :

    Une autre difficulté s'ajoute au problème listé ci-dessus... Je dois agréger dans une BDD "globale" tout un ensemble de BDD "locales" que l'on m'a transmis. Ce sont les fameux fichiers TXT à double en-tête. Ces BDD "locales" disposent d'une colonne "COMMENT" qui contient des commentaires libres. Le soucis, c'est que de manière assez récurrente, des sauts de ligne se sont invités dans cette colonne faisant passer le reste du commentaire ainsi que l'information des colonnes qui suivent sur une nouvelle ligne... (cf. pièce-jointe ci-dessous pour mieux comprendre ce que je veux dire)

    exemple_2.txt

    Nom : Exemple_2.jpg
Affichages : 441
Taille : 260,2 Ko

    Dans ce cas de figure, je me demande s'il existe un moyen de "dire" à PostGreSQL de supprimer le saut de ligne lors de l'import pour les lignes qui en ont besoin.

    Par exemple, l'idée serait de "dire" à PostGreSQL :

    Si tu trouve autre chose qu'un nombre dans la première colonne lors de la phase d'import, supprime le saut de ligne au début de cette ligne.

    Ça me paraît peu probable qu'il soit possible de faire ce genre de chose, mais si c'était possible, ça me simplifierait grandement la vie... Car comme évoqué précédemment, je dispose de fichiers TXT qui font plus de 500 Mo, et retravailler ce type de fichier est à mon avis tout simplement impossible en passant via un éditeur de texte.

    L'une des solutions serait de demander à ceux qui m'ont fourni ces BDD aussi lourdes de me les retransmettre en plusieurs fichiers TXT segmentés, mais ce serait vraiment très lourd (beaucoup de personnes à contacter, relancer de nouveau un processus de validation de ma demande, devoir faire ça chaque année...).

    Par conséquent, si certains d'entre vous ont des conseils à me donner ou des solutions à m'apporter, je suis preneur.

    Je remercie par avance tous ceux qui prendront le temps de lire mon sujet et tous ceux qui pourront me conseiller d'une manière ou d'une autre .

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Une solution serait d’œuvrer (par des procédures) en trois étapes
    1. E: extraction des données vers des tables de passages
    2. T: transformation (nettoyages de données inutiles, formatage nécessaire...)
    3. L: chargement (loading) des données dans les tables finales

    Une autre solution (vue la taille des données) serait d'utiliser des wrappers de fichiers CSV à la place de tables de passages.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Finalement, j'ai trouvé un utilitaire assez pratique qui permet de scinder des fichiers TXT en plusieurs parties de tailles souhaitées, ce qui m'a permis d'apporter les modifications manuellement via Notepad++. Solution un peu laborieuse, mais je pense que c'était la meilleure solution en termes de rapport "Temps de recherche d'une solution/Obtention du résultat souhaité".

    Donc pour info si ça peut servir à quelqu'un, le petit utilitaire que j'ai utilisé se nomme : Textsplit (je le mets en pièce-jointe ci-dessous - trouvé sur sourceforge.net).

    Textsplit.zip

    Merci tout de même alassanediakite pour l'aide proposée. Mais je pense qu'il aurait été difficile de régler mes 2 problèmes via l'utilisation de tables de passages ou de wrappers. Car en plus des sauts de ligne intempestifs dans la colonne "COMMENT", des tabulations se sont également invitées dans cette même colonne (pas pratique quand ces même tabulations servent de séparateurs dans les fichiers que l'on m'a envoyé...), décalant d'autant de colonnes les informations suivantes... L'utilisation de Notepad++ pour corriger tout ça était finalement la solution la plus intuitive pour moi via la fonction "Rechercher/Remplacer".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/06/2014, 11h15
  2. Saut de ligne à l'importation d'un txt
    Par GreatDeveloperOnizuka dans le forum Excel
    Réponses: 3
    Dernier message: 23/04/2009, 20h14
  3. Problème Format Numérique lors d'import txt
    Par clemasson dans le forum Access
    Réponses: 3
    Dernier message: 11/10/2006, 11h31
  4. Réponses: 6
    Dernier message: 28/07/2006, 18h04
  5. Réponses: 26
    Dernier message: 18/03/2006, 15h33

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