Importer une liste .txt vers mysql

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

je souhaiterai savoir s'il existe une fonction pour importer des données d'un fichier texte vers mysql. Mon fichier texte se trouve sous la forme:

1
2
3
4
5
6
7
8
9
idée 1
info 1
blabla 1

idée 2
info 2
blabla 2

etc...

Thx

+0 -0
Auteur du sujet

Ah tu me fais rêver là :) Je suis allé dans PHPMyAdmin mais j'ai pas compris où je devais mettre le nom de chaque colonne. Mais ce qui m'embete le plus, c'est qu'il faudrai que je rajoute des " " un peu partout…

Pas d'autre moyen? Sinon tant pis je me colle à la tache ^^

+0 -0
Staff

C'est faisable avec un éditeur de texte (genre Sublime, ou Geany, ou Notepad++) et quelques regex.

  1. chercher \n\n, remplacer par ⅛⅜£⅛
  2. chercher \n, remplacer par ,
  3. chercher ⅛⅜£⅛, remplacer par \n

et hop, t'as transformé le format donné dans ton premier post en du CSV. :)

Je parle de JavaScript et d'autres trucs sur mon blog : https://draft.li/blog

+1 -0
Auteur du sujet

oh lol je découvre une fonction du notepad ^^ Bon sinon chercher \n\n ça ne fonctionne pas apparemment mais c'est pas trop grave…

Pour résumer, ça doit ressembler à ceci?

1
2
3
4
5
6
7
8
9
idée 1,
info 1,
blabla 1
\n
idée 2,
info 2,
blabla 2
\n
etc...
+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

non, un CSV, ça doit ressembler à ça :

1
2
3
idée 1,info 1,blabla 1
idée 2,info 2,blabla 2
idée 2,info 3,blabla 3

le symbole \n c'est un saut de ligne.

Normalement le CSV peut avoir des noms de colonnes sur la première ligne.

+2 -0
Auteur du sujet

Pas de guillemet pour délimiter chaque donnée?

Du coup je vais devoir me taper un petit script php pour réaménager le fichier txt.

Merci pour toutes vos réponses en tout cas.

:)

Édité par alex4gous

+0 -0
Auteur du sujet

Du coup j'ai pondu un truc dans le genre:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<h1>txt vers csv</h1>
<div>&agrave; copier coller</div>
<br/>

<?php
    #
    #   Version txt to csv AVEC LES TITRES !!!
    #

    $titre1 = 'Type';
    $titre2 = 'Destinataire';
    $titre3 = 'Fda_homme';
    $titre4 = 'Fda_femme';
    $titre5 = 'Fdp_homme';
    $titre6 = 'Fdp_femme';
    # la 7eme ligne est vide.

    $nouvelle_donnee = '';
    $nom_fichier_txt = 'donnee_fdp_test.txt';
    $chiffre_de_redondance = 7; // Nb de colonne (à la ligne) + l'espace s'il existe.
    $encadrement_donnees = '"';
    $separation_donnees = ';';

    $titres_table = $encadrement_donnees . $titre1 . $encadrement_donnees . $separation_donnees;
    $titres_table .= $encadrement_donnees . $titre2 . $encadrement_donnees . $separation_donnees;
    $titres_table .= $encadrement_donnees . $titre3 . $encadrement_donnees . $separation_donnees;
    $titres_table .= $encadrement_donnees . $titre4 . $encadrement_donnees . $separation_donnees;
    $titres_table .= $encadrement_donnees . $titre5 . $encadrement_donnees . $separation_donnees;
    $titres_table .= $encadrement_donnees . $titre6 . $encadrement_donnees;


    if(file_exists($nom_fichier_txt))
    {
        $contenu_fichier_texte = fopen($nom_fichier_txt, 'r'); // r+ Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier. 
        $nb_lecture_de_ligne = 0; //Et on passe aussitot à 1 avec l'incrémentation.

        while (!feof($contenu_fichier_texte)) // Tant que l'on n'est pas à la fin du fichier
        {
            $contenu_de_la_ligne = fgets($contenu_fichier_texte); // On récupère la ligne courante sur laquelle se trouve le pointeur du fichier
            $nb_lecture_de_ligne++; // incrémentation
            if(!($nb_lecture_de_ligne == $chiffre_de_redondance))
            {
                $contenu_de_la_ligne = str_replace(CHR(13).CHR(10),"",$contenu_de_la_ligne); // On supprimer mes retours chariots de ma ligne.
                $nouvelle_donnee .= $encadrement_donnees . $contenu_de_la_ligne . $encadrement_donnees; // Et on transforme la ligne en csv.
                if(!($nb_lecture_de_ligne == ($chiffre_de_redondance - 1))) // Pas de ; à la fin de la ligne.
                {   
                    $nouvelle_donnee .= $separation_donnees;
                }
            }
            else
            {
                $nb_lecture_de_ligne = 0; // Et on passe aussitot à 1 avec l'incrémentation.
                #$nouvelle_donnee .= '\n';
                $nouvelle_donnee .= CHR(13); // pour le retour à la ligne.
            }
            # fputs($contenu_fichier_texte, $_POST["ma_note"]); // On écrit le nouveau message
        }
        fclose($contenu_fichier_texte);
    }
    echo    '<textarea style="width:100%;height:500px">' . 
                $titres_table . CHR(13) .
                $nouvelle_donnee . 
            '</textarea>';
?>

C'est pas parfait mais si jamais ça peut aider quelqu'un, c'est cool. Bonne soirée

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte