2017-10-19 2 views
1

J'essaie d'exécuter une requête de R vers une base de données Oracle, mais la chaîne n'aime pas les guillemets". Par exemple, je voudrais exécuter la requête:Script SQL dans R contenant des guillemets "

select T.* from xyz.table1 T where T."ID"='123' 

En R cela fonctionnerait comme ceci:

sql<-"select T.* from xyz.table1 T where T."ID"='123'" 

R retourne une erreur, en disant:

Error: unexpected symbol in sql<-"select T.* from xyz.table1 T where T." 

Remarque : Nous devons utiliser " autour de ID, comme nous voulons forcer la sensibilité à la casse, de sorte qu'il ne correspond pas à colu mns comme: id, Id.

+0

Si votre nom de domaine est 'ID' (par opposition à' 'Id' ou id') vous pouvez supprimer en toute sécurité les doubles guillemets car ils ne sont pas nécessaires . Tous les noms dans Oracle par défaut à UPPER CASE. Je vous recommande fortement de ne pas créer de noms sensibles à la casse - vous ne faites que demander des problèmes en faisant cela, et votre code sera un gâchis incroyable qui est au mieux difficile à comprendre. Bonne chance. –

Répondre

2

Vous devez utiliser une barre oblique inverse \ pour ne pas afficher les guillemets.

La commande dont vous avez besoin est:

sql <- "select T.* from xyz.table1 T where T.\"ID\"='123'" 
+0

Ne fonctionne toujours pas. Il semble que le problème ne soit pas avec "" mais avec des citations en général. Par exemple: "sélectionner T. * de xyz.table1 T où T \" ID \ "= '123'" ne fonctionne pas "select count (*) à partir xyz.table1 T" fonctionne – Iztok

+0

@Iztok Je pense vous devez être un peu plus précis sur le problème. La solution que j'ai proposée corrige l'erreur dont vous parlez dans votre question. Si vous avez encore une autre erreur dans votre code, vous devez soit éditer votre question, soit en poster une nouvelle. –

+0

Désolé, au début, je pensais que les citations étaient le problème. Quand je lance la requête telle que de sélectionner T. * à partir xyz.table1 où T. « ID » = « 123 », je reçois l'erreur suivante: Erreur: Base de données code du pilote: HYC00 Code du serveur de base de données: 3 pilote de base de données message: [Oracle] [ODBC] [Ora] Fonction facultative non implémentée. Désolé de ne pas connaître le sujet à l'avance. Je promets que je mettrai à jour le sujet après que la solution soit trouvée! Une idée de ce qu'est le problème? – Iztok