Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplacement des guillemets doubles échappés par des guillemets doubles dans R

Je vois deux problèmes avec ce que vous avez inclus dans votre question. Le premier ressemble à une faute de frappe. Après :

html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"   

Vous avez :

query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
                                                  ^^^^^^^^^^^^^^^

Remarquez que vous échappez une chaîne mais pas l'autre. Vous n'avez pas besoin de leur échapper, mais peu importe si vous le faites. Vous vouliez aussi dire '")' pour la dernière chaîne qui est, je suppose, la véritable source de l'erreur que vous obtenez. paste plutôt que c est plus utile ici. Si je les combine, nous obtenons :

query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")

que nous pouvons utiliser directement :

dbSendQuery(con, query)

Le deuxième problème, et celui que beaucoup de gens font, est de confondre la représentation imprimée d'un objet avec l'objet lui-même. Si nous imprimons query , nous voyons ceci :

> query
[1] "INSERT INTO table (htmlfield) VALUES (\"<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>\")"

La représentation imprimée de la chaîne est toujours entourée de "" les guillemets doubles, et en tant que tels le " interne il faut s'évader. Ce que vous voulez regarder, c'est la chaîne réelle. Nous pouvons le faire avec cat ou writeLines - Je préfère ce dernier car il ajoute le "\n" automatiquement à la fin de la chaîne :

> writeLines(query)
INSERT INTO table (htmlfield) VALUES ("<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>")

Remarquez comment le " ne sont maintenant pas échappé. C'est le SQL qui serait exécuté par le serveur de base de données. Si c'est du SQL valide pour votre base de données, cela fonctionnera.