|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bonjour,
J'essaye toujours d'importer des fichiers csv dans une base de données. J'ai un probleme quand une ligne de mon fichier contient le caractère ' ou ; . Ex : et Code :
pvit.listPVToDisplay; 702;701;10114;703.... En effet le " ' " est utilisé dans la ligne de commande qui envoie les variables dans la base de données et il les interprete donc lorsqu'une ligne en contient... Le ; est mon séparateur de champs et au lieu d'envoyer par exemple la ligne : "701;10114;702" , il envoie "701" uniquement Dois je faire préalablement une reconstruction du fichier en remplaçant ces 2 caractères spéciaux par autre chose ou bien puis-je les préserver avec une méthode ? (Normalement je ne peux pas toucher aux données). Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bon j'ai reconverti le fichier en utilisant des separateurs " | " au lieu des " ; ".
Ca a l'air de regler un des deux problemes. Par contre je ne vois vraiment pas pour le single quote |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Pour apporter plus de précision je vous donne le code que j'utilise pour importer le fichier en question dans ma BDD.
Code :
|
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 81 ![]() |
Peux tu donner un exemple de lignes de ton fichier csv stp pour que l'on se rende encore mieux compte de ce que tu dois faire et ce que tu souhaites récupérer.
merci |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Code :
Il n'aime pas le 'red' sans doute à cause que la quote de cette ligne ferme prématurement la quote du '$VAR2'... Et je ne vois pas comment l'eviter |
||
|
|
00
|
|
|
#6 | ||||
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 81 ![]() |
alors j'ai repris ton code
Code :
et voila ce que je trouve dans tmpfile1.csv : Code :
ou alors est-ce que le problème ne vient que lors de ton import de ton fichier dans la base?? |
||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
C'est lors de l'injection des données dans la base que ca plante ^^.
Code :
psql -U utilisateur BaseDeDonnée < tmpfile1.csv il contient une série de fois cette instruction ci : Code :
INSERT INTO key_value (kv_name, kv_value, id_import) VALUES ('$VAR1', '$VAR2'); Code :
INSERT INTO key_value (kv_name, kv_value, id_import) VALUES ('shutdown.messageWB', '<b><font color ='red'>');
Je pense que c'est plus explicite comme cela ^^. |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 81 ![]() |
ok c'est bien ce que je pensais après.
alors normalement pour ne pas prendre en compte le caractère spécial ' tu devrais mettre \ devant mais je ne sais pas du tout si cela va fonctionner par la suite. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
non car tout est consideré comme du texte ^^.
Donc si je met le "\" il va importer le caractere "\" tel quel dans la base il me semble. Il butera toujours sur le '. En fait j'ai deja essayé ^^. |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 81 ![]() |
et il te met quoi comme erreur en fait?
parce qu'en fait c'est étonnant que ' t'embête comme ça à partir du moment oùtu n'as pas eu d'erreur lors de la création de ton fichier tmpfile1.csv. Derrière ce n'est qu'un import d'une requête dans une base qui, fait à la main, doit certainement fonctionner. Si tu vois ce que je veux dire. |
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bah il injecte pas cette ligne justement :>
Voila ce qu'il me met. Code :
|
||
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 81 ![]() |
d'accord
dc là je vais t'avouer que je ne vois pas tro bien comment résoudre ton problème dsl |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bah la j'ai essayé en remplaçant les single quote par des doubles.
Ca ne passe pas non plus ;s... |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() budget et contrôle de gestion Inscription : décembre 2006 Messages : 896 ![]() |
Salut,
et si tu essaye de remplacer ' avec Alt-Gr+7 =>` ? Code Remplacer ' par ` :
INSERT INTO key_value (kv_name, kv_value, id_import) VALUES (`shutdown.messageWB`, `<b><font color ='red'>`); |
|
|
00
|
|
|
#15 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 13 ![]() |
Bonjour ,
Apres un petit essai ... ca fonctionne avec ca .... Code :
Citation:
|
|||
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 24 ![]() |
Un collègue m'a aidé a trouver une solution qui semble marcher :
Code :
vi -c "1,$ s/\\'/\\'\'/g|wq" fichier.csv on obtient alors ''red'' ce qui est interpreté tel que je le voulais par SQL... Merci quand meme pour les idées ^^. Maintenant je règle un autre probleme ( snif déprimant :p) . Le fichier csv contient une ligne blanche superflue et donc au lieu d'obtenir X row, j'en obtiens X + 1 vide par importation. ^^ |
|
|
00
|
|
|
#17 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 13 ![]() |
Dans ce cas la .. quand tu fais un cat de ton fichier tu rajoutes un grep ..
Exemple : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com