1

Hello,

Je viens de poser la question à Google sans grand succès pour le moment : connaissez-vous un outil Windows qui permettrait d'exécuter des requêtes SQL (ou des simili-requêtes, en fait je n'ai besoin que d'un SELECT avec critères, groupements et tri) directement sur un fichier plat ?

Il existe probablement plein de façons d'importer un CSV dans une vraie base, mais je risque d'avoir pas mal de CSV jetables à traiter et s'il faut que je les importe à chaque fois pour pouvoir travailler dessus, ça risque de ne pas être très efficace.

Pour l'instant je n'ai trouvé que ça : http://code.google.com/p/gcsvsql/ ; d'après la description ça fait ce que je veux, mais c'est codé en Groovy (trifus) donc j'aimerais être sûr qu'il n'existe pas quelque chose de plus pratique (pas codé avec un langage qui m'oblige à installer une VM supplémentaire, et si possible avec une GUI).

Merci smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Oui, tu peux utiliser un driver ODBC sur du CSV ; si besoin, tu peux même ajouter nue surcouche JDBC->ODBC->CSV (on avait cherché un driver JDBC->CSV direct, mais on n'en avait trouvé aucun de potable).
J'ai une note que j'ai fait pour le boulot à ce sujet, je te la transmets en mini-message...
avatar

3

Merci smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

(Y a rien de critique dans le document, hein, c'est juste que je veux éviter que ça soit disponible sur Internet "comme ça" ; si d'autres personnes sont intéressées, il n'y a aucun souci)
avatar

5

ah ouais tiens tant qu'on y est: y'a quoi comme outil pour faire comme (l'outil mysql en ligne de commande) avec ODBC?

6

T4eSQL : http://www.tools4ever.com/products/free/command/ (je ne l'ai jamais utilisé, par contre)
avatar

7

Nil : tu utilises quoi comme driver ODBC ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

Comment ça ? Pour le CSV ? Celui qui est livré de base avec Windows, comme décrit dans le document...
avatar

9

Justement, je ne l'ai pas dans ma liste de drivers (en fait elle est quasiment vide, il n'y a que quelques trucs de MSSQL dedans)

[edit] cf. http://www.mirari.fr/HyxD
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Etrange... C'est quelle version de Windows ? Tu es membre d'un domaine ? Peut-être que les administrateurs ont fait du ménage ?
avatar

11

Peut-être, oui ; je viens d'éditer le post ./9. J'ai tenté "microsoft csv odbc driver" / "microsoft text odbc driver" sur google sans trop de résultat, si tu connais le nom du paquet ou de la dll qui fournit ce service je suis preneur smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

La DLL est ODBCJT32.DLL ; je n'ai pas trouvé trace sur Google d'un potentiel ODBCJT64.DLL, c'est peut-être la raison de son absence ?

A priori, il est disponible avec ce pack : http://support.microsoft.com/kb/239114
avatar

13

Visiblement ça a disparu avec Windows 7, je vais tenter la version XP de ton lien, mais ça sent le pâté grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

https://www-304.ibm.com/support/docview.wss?uid=swg21411923 -> A priori, ça devrait pouvoir t'offrir une solution...
avatar

15

Effectivement ça affiche davantage de drivers dont celui pour les CSV, en revanche ça ne marche pas du tout ensuite grin (floppée de messages d'erreur quand on clique sur un bouton, etc).

Tant pis, merci pour ton temps, je vais essayer de bricoler quelque chose pour ne pas y passer l'après-midi ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

Arf merde :/
Bon bah de rien pour le coup, mais c'est assez emmerdant pour nous si ça ne fonctionne plus, parce qu'on va devoir migrer un jour ou l'autre vers des OS modernes et qu'il faudra trouver une solution cheeky
avatar

17

Bon, solution du pauvre : j'ai installé un easyphp, et chargé mes données dans une base MySQL (après avoir découvert que MySQL supportait nativement le chargement des CSV). Pas super pratique ni élégant, mais ça marche \o/

Merci encore happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

Et Excel n'aurait pas convenu ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

19

On peut faire des requêtes SQL dans Excel ? (sinon il y a aussi un driver ODBC Excel, mais pour une raison qui m'échappe je ne l'avais pas non plus)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

Sinon, il y a toujours Access, mais pour le coup faire des insertions massives en mySql me semble assez similaire.
avatar

21

Pour l'instant la solution MySQL me convient : j'ai un script tout con qui transforme mon fichier en CSV et l'importe en base, donc à condition de laisser EasyPHP tourner, ça reste rapide à utiliser et ça permet de faire toutes les requêtes dont j'ai besoin (avec de bonnes perf au passage, même si ça n'était pas un critère).

D'ailleurs si ça peut resservir à qqun :
script
#! /bin/sh csv=`mktemp` sql=`mktemp` if [ $# -eq 0 ]; then echo "usage: $0 <file 1> [<file 2> [...]]" exit 0 fi while [ $# -gt 0 ]; do echo "converting file '$1' to csv..." sed -r 's/^[^|]*\|(.*)$/\1/;s/[.A-Za-z]+: ([^,]*)((,) *)?/\1\3/g' "$1" >> "$csv" shift done echo "sending to database..." cat << EOF > "$sql" LOAD DATA LOCAL INFILE '$(cygpath -am "$csv")' INTO TABLE res FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (id, client, client_name, client_weight, answer, answer_clickthrough, answer_elapsed, answer_price) EOF cat "$sql" | /cygdrive/c/blablabla/EasyPHP/mysql/bin/mysql -ukikoo -plol mabase echo "done." rm -f "$csv" rm -f "$sql"
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

Je me demandais pourquoi tu n'utilisais pas tout simplement la commande mysqlimport, mais je n'avais pas réalisé que tu n'avais pas de "vrais" fichiers CSV au début (cela dit, mysqlimport a pas mal d'options, peut-être que ça répondrait directement et totalement à ton problème).
avatar

23

pas mal cette commande mysql LOAD, merci top