2009-12-21 4 views
2

J'essaie d'exporter des données de MATLAB vers une base de données. J'utilise une base de données PostgreSQL via ODBC comme suit. Tout d'abord, je crée la connexion:Pourquoi ai-je cette erreur lors de la création d'une requête SQL dans MATLAB?

dbConn = database('PostgreSQL30', username,password); 

Si je tente d'exécuter une insertion de test manuellement, tout semble bien:

exec(dbConn, 'insert into test(std) values(2.2)') 

Lorsque je tente de générer une courte requête dynamique, tout semble toujours très bien:

q = sprintf('insert into test(std) values(%2.2f)', 12.345); 
res = exec(dbConn, q); 

Mais lorsque je tente de générer une requête contenant des chaînes, je reçois une erreur:

>> q = sprintf('insert into test(name) values("%s")', 'xxx') 

q = 

insert into test(name) values("xxx") 

>> res = exec(dbConn, q); 
>> res.Message 
ans = 

ERROR: column "xxx" does not exist; 
Error while executing the query 

Il n'y a pas de différence si j'utilise le format "%s" ou %s. Où est le problème?

EDIT

OK, j'ai utilisé les guillemets mal. Quand j'utilise:

q = sprintf('insert into test(name) values(''%s'')', 'xxx') 

tout est OK. Donc la question peut être fermée/effacée. Désolé de vous déranger.

+1

Il ne doit pas nécessairement être fermé. Cela peut aider quelqu'un d'autre qui vient ici avec le même problème. – gnovice

+0

sur une note non liée, j'ai déjà utilisé la bibliothèque ** pgmex ** pour l'interface avec PostgreSQL de MATLAB (utilise directement la librairie C libpq): http://www.dertech.com/pgmex/pgmex.html – Amro

+0

mais la bibliothèque dans les fonctions de communication matlab avec postgres sont assez bons, y at-il une différence significative dans l'utilisation de pgmex? – Gacek

Répondre

4

Avez-vous essayé d'utiliser des guillemets simples?

>> q = sprintf('insert into test(name) values(''%s'')', 'xxx') 

q = 

insert into test(name) values('xxx') 
+0

Ouais, j'ai trouvé la même chose. Merci d'avoir répondu. – Gacek

Questions connexes