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

MySQL Discussion :

Import d'une masse de fichiers txt avec sélection/correspondance début de lignes


Sujet :

MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien son
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien son

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Import d'une masse de fichiers txt avec sélection/correspondance début de lignes
    [MySQL-8.0] Import d'une masse de fichiers txt avec sélection/correspondance début de lignes

    Bonjour à tous,

    Je suis sous Win Seven, et recherche une méthode pour alimenter une base MySQL (install en local) avec des fichiers texte (plus d'un million),
    dans lesquels je ne veux récupérer que la ligne dont le début sous la forme : "version=TEXTE_A_RECUPERER" (délimiteur =)
    correspond au champ "txt_version" de la table, et ainsi de suite...
    Pour couronner le tout ces fichiers sont classés dans ce genre d'arborescence (modulo je crois ?) :

    D:\CLASSEMENT\FICHES
    +---A
    | \---00000000
    | +---00000000
    | | +---00000000
    | | | A_000001.txt
    | | | A_000002.txt
    | | | ...
    | | |
    | | +---00000128
    | | | A_000128.txt
    | | | A_000129.txt
    | | | ...
    | | |
    | | +---00000256
    | | |
    |
    +---B
    | \---00000000
    | +---00000000
    | | +---00000000
    | | | B_000001.txt
    | | | B_000002.txt
    | | | ...


    Faut-il faire une compilation préalable des fichiers (faisabilité, vu la masse de données) ou peut-on faire directement cette opération avec MySQL ?
    Sachant par ailleurs que je n'ai qu'une maîtrise très limité du sujet, et n'ai ni Apache et PHP sur ma machine.
    Je cherche déjà une approche, je ferais les installs si nécessaire sur vos conseils...
    Merci,
    JPh


    mysql> SHOW TABLES;
    +--------------------+
    | Tables_in_base_txt |
    +--------------------+
    | table_txt |
    +--------------------+
    1 row in set (0.00 sec)

    mysql> DESCRIBE table_txt;
    +----------------------+--------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------------------+--------------+------+-----+---------+-------+
    | txt_version | varchar(10) | YES | | NULL | |
    | txt_nom | varchar(200) | YES | | NULL | |
    | txt_volume | varchar(10) | YES | | NULL | |
    | txt_reference | varchar(20) | YES | | NULL | |
    | txt_numero | varchar(20) | YES | | NULL | |
    | txt_date | datetime | YES | | NULL | |
    | txt_procedure | varchar(200) | YES | | NULL | |
    | txt_prestataire | varchar(200) | YES | | NULL | |
    | txt_origine | varchar(200) | YES | | NULL | |
    | txt_repertoire | varchar(200) | YES | | NULL | |
    +----------------------+--------------+------+-----+---------+-------+
    10 rows in set (0.00 sec)

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Tu n'as pas donné le format de fichier.

    MySQL ne te permettra pas de parcourir des dossiers et des fichiers et de préparer des LOAD DATA.

    Il faudra passer par un programme/script. Je ne vois pas de difficultés particulières. Perso je ferais ça en PHP.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien son
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien son

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est du TXT en UTF8

    Pardon, il y a une subtilité supplémentaire :
    les 6 premiers "intitulés" de ligne sont présents dans tous les fichiers,

    version=
    nom =
    volume=
    reference=
    numero=
    date=

    Pour les quatre derniers c'est variable, il peut y en avoir 1, 2, aucun...

    procedure=
    prestataire=
    origine=
    repertoire=

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    OK, je maintiens que tu ne pourras pas faire cela en SQL pur.

    Voir PHP ou autre pour parcourir récursivement les dossiers (itérateur RecursiveDirectoryIterator), parser les fichiers, et insérer leur contenu en BdD.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 606
    Points : 19 826
    Points
    19 826
    Par défaut
    Salut à tous.

    Citation Envoyé par _JPh_
    Je suis sous Win Seven,
    Il serait temps de migrer vers Windows 11 Pro, non ?

    Citation Envoyé par _JPh_
    je ne veux récupérer que la ligne dont le début sous la forme : "version=TEXTE_A_RECUPERER" (délimiteur =)
    Donnes un exemple plus précis de ce que tu veux récupérer ?
    Est-elle toujours au même emplacement dans le fichier ? La 5ième ligne en partant du début du fichier.
    Tu indiques le délimiteur =. Je pense plutôt que tu as deux délimiteurs, dont le second est le guillemet de fin de la chaîne de caractères.
    Ya-t-il des caractères spéciaux dans ta chaînes de caractères ? Autres que des chiffres et des lettres.

    Citation Envoyé par _JPh_
    Pour couronner le tout ces fichiers sont classés dans ce genre d'arborescence (modulo je crois ?) :
    Le balayage de tous tes répertoires est faisable en PHP, pas sous MySql.

    Citation Envoyé par _JPh_
    Faut-il faire une compilation préalable des fichiers (faisabilité, vu la masse de données) ou peut-on faire directement cette opération avec MySQL ?
    En utilisant "load data local infile", tu peux extraire ta chaîne de caractères, à la condition qu'elle soit toujours au même emplacement dans le fichier.
    Si tu ne connais pas l'emplacement du fichier dans ton arborescence, le mieux sera de faire un travail de préparation en php.
    Il serait plus simple pour MySql, de produire un fichier regroupant toutes tes chaînes de caractères, en les plaçant une par ligne.

    @+

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien son
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien son

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,

    @Séb.

    Je suis en train d'installer et paramétrer Apache/PHP/mySQL/phpMyAdmin
    Dès que je suis opérationnel, je reviens vers vous...


    @ Artemus24

    Pour info, je fais ma config sur une autre bécane en Win 10 ;-)

    Les guillemets étaient là pour citation

    Les fichiers ont un nombre de lignes très variable d'une quarantaine en moyenne, à plus de 200

    La structure, ce sont en générale, des paragraphes séparés par des sauts de lignes en nombre variable aussi, et je vous avoue que je n'ai pas tout vérifié, il y en à peut près 1200000 !

    [PARAGRAPHE1]
    Item1=
    Item2=
    Item3=
    etc.

    [PARAGRAPHE2]
    Item1=
    Item2=
    Item3=
    etc.


    Ce que je souhaite récupérer se trouve après le signe = des lignes ci-dessous,
    qui dans certains fichiers n'existent pas. Seules les 6 premières sont systématiques

    version=
    nom=
    volume=
    reference=
    numero=
    date=
    procedure=
    prestataire=
    origine=
    repertoire=


    J'ai fait un test avec une macro qui lit le fichier et supprime toutes les lignes indésirables
    Mais je ne suis pas allé plus loin, Excel ne pouvant ingurgiter une telle quantité...

    JPh

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Le format ressemble aux .ini

    Avec PHP il y a parse_ini_file() pour ces fichiers.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2017, 19h34
  2. Réponses: 2
    Dernier message: 01/04/2017, 16h30
  3. Réponses: 1
    Dernier message: 21/09/2008, 19h35
  4. Importation d'une centaine de fichiers TXT
    Par cavo789 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2007, 07h53
  5. Pb import fichier txt avec lignes de longueurs diverses
    Par zebulon90 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 09h32

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