Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2007, 15h01   #1
Invité de passage
 
Inscription : février 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 20
Points : 4
Points : 4
Par défaut [Requête SQL]insertion d'un champ avec un caractère spécial dans une table

Bonjour à tous,

J'aimerai créer une table avec une colonne "location" qui référence l'adresse absolue des fichiers en l'occurences des fichiers images.
Or il n'accepte pas le caractère "\", j'ai essayé avec \\ ou E'\'...

comment puis-je faire?

Merci d'avance

p.s. : voici mon bout de la requête
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN;
CREATE TABLE "dted1" (gid serial PRIMARY KEY,"location" varchar(255));
SELECT AddGeometryColumn('','dted1','the_geom','-1','MULTIPOLYGON',2);
COPY "dted1" ("location",the_geom) FROM stdin;
c:\\e000\\n42.dt1	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D804540824E1BE8B401F03F74DA40A70D804540824E1BE8B401F03F8C25BF58F2FF44404F1BE8B4814E3BBF8C25BF58F2FF44404F1BE8B4814E3BBF74DA40A70D804540
"c:\\e000\\n43.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D004640824E1BE8B401F03F74DA40A70D004640824E1BE8B401F03F8C25BF58F27F45404F1BE8B4814E3BBF8C25BF58F27F45404F1BE8B4814E3BBF74DA40A70D004640
"c:\\e000\\n44.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D804640824E1BE8B401F03F74DA40A70D804640824E1BE8B401F03F8C25BF58F2FF45404F1BE8B4814E3BBF8C25BF58F2FF45404F1BE8B4814E3BBF74DA40A70D804640
"c:\\e000\\n45.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D004740824E1BE8B401F03F74DA40A70D004740824E1BE8B401F03F8C25BF58F27F46404F1BE8B4814E3BBF8C25BF58F27F46404F1BE8B4814E3BBF74DA40A70D004740
"c:\\e000\\n46.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D804740824E1BE8B401F03F74DA40A70D804740824E1BE8B401F03F8C25BF58F2FF46404F1BE8B4814E3BBF8C25BF58F2FF46404F1BE8B4814E3BBF74DA40A70D804740
"c:\\e000\\n47.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D004840824E1BE8B401F03F74DA40A70D004840824E1BE8B401F03F8C25BF58F27F47404F1BE8B4814E3BBF8C25BF58F27F47404F1BE8B4814E3BBF74DA40A70D004840
"c:\\e000\\n48.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D804840824E1BE8B401F03F74DA40A70D804840824E1BE8B401F03F8C25BF58F2FF47404F1BE8B4814E3BBF8C25BF58F2FF47404F1BE8B4814E3BBF74DA40A70D804840
"c:\\e000\\n49.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E3BBF74DA40A70D004940824E1BE8B401F03F74DA40A70D004940824E1BE8B401F03F8C25BF58F27F48404F1BE8B4814E3BBF8C25BF58F27F48404F1BE8B4814E3BBF74DA40A70D004940
"c:\\e000\\n50.dt1"	010600000001000000010300000001000000050000004F1BE8B4814E4BBF74DA40A70D804940049D36D06903F03F74DA40A70D804940049D36D06903F03F8C25BF58F2FF48404F1BE8B4814E4BBF8C25BF58F2FF48404F1BE8B4814E4BBF74DA40A70D804940
\.
END;
Les nombres ceux sont des références spatiales pour de la localisation.
Benjamin_es est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2007, 11h53   #2
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Salut,

Normalement pour insérer des \ t'as juste à les échapper
Si tu fait un insert into test (location) values ('c:\\e000\\n43.dt1');
en faisant un select location il te renvoie
c:\e000\n43.dt1;

donc à priori il prends bien les \

Mais t'as pas mis ton message d'erreur t'es sûr que l'erreur proviens bien des '\' ?
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 08h46   #3
Invité de passage
 
Inscription : février 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 20
Points : 4
Points : 4
Merci pour ta réponse, je vais essayer avec un "insert into"
voilà la réponse que j'ai :
Code :
1
2
3
ERROR: syntax error at OR near "c"
État SQL :42601
Caractère : 197
si je ne mets pas de ' '
si je mets des ' ' voilà l'erreur :
Code :
1
2
3
4
5
6
7
8
WARNING:  nonstandard USE of \\ IN a string literal
LIGNE 5 : 'c:\\e000\\n42.dt1'       0106000000010000000103000000010000...
          ^
ASTUCE : USE the escape string syntax FOR backslashes, e.g., E'\\'.
 
ERROR: syntax error at OR near "'c:\\e000\\n42.dt1'"
État SQL :42601
Caractère : 197
Benjamin_es est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 10h58   #4
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Salut,

Je ne vois pas d'où peut venir ton problème.
En créant une table et en faisant un select, tout fonctionne correctement ;

Code :
1
2
3
4
5
6
7
8
9
 
INSERT INTO matable ("monchamps")
       VALUES('c:\\ploum');
 
SELECT * FROM matable;
 
    ----
    |c:\ploum
    |
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 11h10   #5
Invité de passage
 
Inscription : février 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 20
Points : 4
Points : 4
Merci pour la réponse, finalement je suis passé par cette soluce
Benjamin_es est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h48.


 
 
 
 
Partenaires

Hébergement Web