Veo dos problemas con lo que incluiste en tu pregunta. El primero parece un error tipográfico. Después:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"
Tienes:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
^^^^^^^^^^^^^^^
Observe que escapa de una cadena pero no de la otra. No necesitas escapar de ellos, pero no importa si lo haces. También quisiste decir '")'
para la última cadena que es, sospecho, la fuente real del error que está recibiendo. paste
en lugar de c
es más útil aquí. Si combino estos, obtenemos:
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
que podemos usar directamente:
dbSendQuery(con, query)
El segundo problema, y que mucha gente se hace, es confundir la representación impresa de un objeto con el objeto mismo. Si imprimimos query
, vemos esto:
> 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 representación impresa de la cadena siempre se incluye entre ""
comillas dobles, y como tal el "
interno hay que escapar. Lo que quieres ver es la cadena real. Podemos hacer eso con cat
o writeLines
- Prefiero este último ya que agrega el "\n"
al final de la cadena automáticamente:
> 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>")
Observe cómo "
ahora no escapado. Ese es el SQL que sería ejecutado por el servidor de la base de datos. Si ese es un SQL válido para su base de datos, entonces funcionará.