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.
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
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
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