Vejo dois problemas com o que você incluiu na sua pergunta. A primeira parece um erro de digitação. Depois:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"
Você tem:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
^^^^^^^^^^^^^^^
Observe que você escapa de uma string, mas não da outra. Você não precisa escapar deles, mas não importa se você fizer isso. Você também quis dizer
'")'
para a última string que é, suspeito, a verdadeira fonte do erro que você está recebendo. paste
em vez de c
é mais útil aqui. Se eu combiná-los, teremos:query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
que podemos usar diretamente:
dbSendQuery(con, query)
O segundo problema, e que muitas pessoas fazem, é confundir a representação impressa de um objeto com o próprio objeto. Se imprimirmos
query
, vemos isso:> 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>\")"
A representação impressa da string é sempre colocada entre
""
aspas duplas e, como tal, o "
interno precisam ser escapados. O que você quer ver é a string real. Podemos fazer isso com cat
ou writeLines
- Eu prefiro o último, pois adiciona o "\n"
ao final da string automaticamente:> 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 como o
"
agora não escapou. Esse é o SQL que seria executado pelo servidor de banco de dados. Se isso for um SQL válido para o seu banco de dados, ele funcionará.