#1 03-04-2006 00:40:17

Siddartha
Administrateur
Lieu: Paris et #66valley ☼
Date d'inscription: 20-06-2005
Messages: 2988
Site web

Parser du csv sous unix

Je viens de le finir et ca marche vraiment bien smile

csv2sql :

Code:

#!/bin/bash

FILE=$1

# On insérer le INSERT INTO tables VALUES (' au début de chaque ligne
sed -e"s/^/INSERT INTO global VALUES (\'/g" $FILE > temp.txt

# On supprimer toutes les " qui encadre les champs txt liées à la structure CSV
sed "s/\"//g" temp.txt > temp2.txt

# On supprime les | par "," pour créer la requete sql
sed "s/|/','/g" temp2.txt > temp3.txt

# On rajoute le '); à la fin pour finir la requête sql.
sed -e"s/$/\')\;/g" temp3.txt > $FILE.sql

echo ":: $FILE est pret a etre inserer en bdd ::";

Ca se lance en faisant un : ./csv2sql nom_fichier

Enjoy wink
PS: vous pouvez adapter en fonction des csv, g commenté exprés smile

Hors ligne

 

#2 03-04-2006 08:59:07

salemioche
Survivors
Lieu: blue sky
Date d'inscription: 06-07-2005
Messages: 4128
Site web

Re: Parser du csv sous unix

Code:

# On supprime les | par "," pour créer la requete sql
sed "s/|/','/g" temp2.txt > temp3.txt

j'imagine que tu exportes le csv avec | comme separateur alors ?

Hors ligne

 

#3 03-04-2006 10:06:46

Siddartha
Administrateur
Lieu: Paris et #66valley ☼
Date d'inscription: 20-06-2005
Messages: 2988
Site web

Re: Parser du csv sous unix

Exact, si ton export est différent au niveau du format, y'a pas trop de difficultés à modifier le script wink

A la fin, ton fichier .sql est prêt, reste plus qu'a faire le script qui insérer tout ds la bdd direct, et les sites d'affil ca va rulez tout seul wink

Seule option qui manque que je dois faire, c'est rendre le 'table' du INSERT INTO dynamique en le faisant passer dans le parametre du script pour pouvoir l'utiliser de manière plus souple, genre : ./csv1sql nom_fichier --table=ma_table_sql cool

Hors ligne

 

#4 03-04-2006 10:23:45

coyote
Moderateur -
Lieu: le Perche
Date d'inscription: 22-06-2005
Messages: 2252
Site web

Re: Parser du csv sous unix

Et un petit cron pour lancer ça régulierment c'est faisable ?


Boxe thai + Ok Bébé au Poker en ligne = plus de
sos croquettes

Hors ligne

 

#5 03-04-2006 12:34:40

Siddartha
Administrateur
Lieu: Paris et #66valley ☼
Date d'inscription: 20-06-2005
Messages: 2988
Site web

Re: Parser du csv sous unix

C'est même fait pour ;-)

Hors ligne

 

#6 03-04-2006 14:02:12

salemioche
Survivors
Lieu: blue sky
Date d'inscription: 06-07-2005
Messages: 4128
Site web

Re: Parser du csv sous unix

juste un conseil, faire la recup du flux AVANT de faire un TRUNCATE sur la table (au cas ou lol )

Hors ligne

 

#7 03-04-2006 14:02:41

salemioche
Survivors
Lieu: blue sky
Date d'inscription: 06-07-2005
Messages: 4128
Site web

Re: Parser du csv sous unix

dans un post precedent, j'avais donné le bout de code pour passer de XML en CSV

vous avez tout a présent wink

Hors ligne

 

#8 03-04-2006 14:39:16

coyote
Moderateur -
Lieu: le Perche
Date d'inscription: 22-06-2005
Messages: 2252
Site web

Re: Parser du csv sous unix

Bien qui a une affile sérieuse en informatique que j'essai ce petit code .
pas de dell surtout leurs csv sont trop bordélique et comporte des chanp différent suivant les article.


Boxe thai + Ok Bébé au Poker en ligne = plus de
sos croquettes

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 R. Andersson