Importer une liste .txt vers mysql
Le problème exposé dans ce sujet a été résolu.
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:
| idée 1
info 1
blabla 1
idée 2
info 2
blabla 2
etc...
|
Thx
Salut,
Il est très facile de transformer ton fichier en un .csv, et tu peux importer des .csv dans PHPMyAdmin si t'utilises PHP.
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
C'est faisable avec un éditeur de texte (genre Sublime, ou Geany, ou Notepad++) et quelques regex.
- chercher \n\n, remplacer par ⅛⅜£⅛
- chercher \n, remplacer par ,
- chercher ⅛⅜£⅛, remplacer par \n
et hop, t'as transformé le format donné dans ton premier post en du CSV.
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?
| idée 1,
info 1,
blabla 1
\n
idée 2,
info 2,
blabla 2
\n
etc...
|
non, un CSV, ça doit ressembler à ça :
| 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.
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.
Tu peux mettre les guillemets mais c'est pas obligatoire. Tu peux aussi mettre des point virgule a la place des virgule.
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>à 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
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
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