# Importer un fichier texte txt vers mysql



## makin_toch (3 Avril 2009)

Bonjour,   

Je suis en local et j'essaie d'importer un fichier texte contenant des données vers une table mysql. Dans ce fichier texte les champs sont séparés par un '*' par exemple, et les enregistrements sont séparés par un '/'.

je cherche un exemple de code source en java pour m'aider à cette tâche.
merci


----------



## grumff (3 Avril 2009)

SQLDeveloper doit bien être capable de te faire ça, au pire en remplaçant avant tes * par des ; et tes / par des retours chariot.
Mais si tu tiens à le faire en java, tu lis la faq java de developpez.com pour apprendre comment lire le fichier en java, la même faq pour voir comment on envoie du sql en java, et entre les deux tu utilises la méthode maString.split pour découper ta chaîne (évite le stringtokenizer qui ne renvoie pas les éléments vides).
Ou tu la joues un peu plus finement en lisant le fichier par morceaux jusqu'à rencontrer des "/". Tout dépend de la volumétrie.


----------



## Lapin Masqué (3 Avril 2009)

Et si tu es courageux tu peux regarder du côté des Expressions Régulières qui sont toujours très utiles.


----------



## ntx (3 Avril 2009)

Un petit coup de sed et awk pour reformater ton fichier en cvs et c'est bon :rateau:


----------



## tatouille (8 Avril 2009)

Chers machin_teub,

```
#!/bin/bash

sql="use ${db}; load data infile '$file' into table ${table} fields \
terminated by '*' lines terminated by '\\'"

mysql --user="${user}" --password="${password}" --batch -N -e "$sql"
```
c'est pas du jajaja mais tu peux utiliser la requete de newbie que j'ai mise :rateau: comme on dit les docs c'est pas pour les chiens, je me souviens m' etre interesse a la question il y a quelques annees et avoir tout trouve/tout mon bonheur  sur le site de mysql et en lisant la documentation... enfin comme on dit faire un effort, ou _vulgairement _ _se sortir les doigts du cul


_


----------



## grumff (8 Avril 2009)

Ah oui tiens, je l'avais oubliée celle là  J'étais pourtant tombé dessus dans les même conditions que toi Tatouille.  C'est tellement pratique qu'on en oublie que ça existe.
(et ça doit aussi pouvoir s'envoyer via jdbc évidemment)


----------



## tatouille (8 Avril 2009)

oui si Mysql a ete setup avec l'option local data infile

pour ntx et pinpin magique  :

```
row_1_test1 * row_1_test2 * row_1_test3 / row_2_test1 * row_2_test2 * row_2_test3
```


```
%$ sed \
-e "s/*/;/g" \
-e "s/\//\\n/g" test.txt | tr '\\n' '\n'
```


```
row_1_test1 ; row_1_test2 ; row_1_test3 
 row_2_test1 ; row_2_test2 ; row_2_test3
```
# (c) Tatouille: un petit trick en passant pour BSD/Non-GNU/Non-Minix sed et les line feed (CR/LF). enjoY!, 
a noter que les regexps sont simplissimes row_1_/*test3 et c'est caca, mais bon, c'est un starting point


----------

