Importer un fichier texte txt vers mysql

makin_toch

Membre enregistré
19 Mars 2009
9
0
40
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
 
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.
 
Chers machin_teub,
Bloc de code:
#!/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

:zen:
 
  • J’aime
Réactions: Lapin Masqué
Ah oui tiens, je l'avais oubliée celle là :D 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)
 
oui si Mysql a ete setup avec l'option local data infile

pour ntx et pinpin magique :D :
Bloc de code:
row_1_test1 * row_1_test2 * row_1_test3 / row_2_test1 * row_2_test2 * row_2_test3
Bloc de code:
%$ sed \
-e "s/*/;/g" \
-e "s/\//\\n/g" test.txt | tr '\\n' '\n'
Bloc de code:
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
:zen: