Vedo due problemi con ciò che hai incluso nella tua domanda. Il primo sembra un errore di battitura. Dopo:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"
Hai:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
^^^^^^^^^^^^^^^
Nota che esci da una stringa ma non dall'altra. Non è necessario scappare da loro, ma non importa se lo fai. Intendevi anche '")'
per l'ultima stringa che è, sospetto, la vera fonte dell'errore che stai ricevendo. paste
anziché c
è più utile qui. Se li combino, otteniamo:
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
che possiamo utilizzare direttamente:
dbSendQuery(con, query)
Il secondo problema, che molte persone si pongono, è confondere la rappresentazione stampata di un oggetto con l'oggetto stesso. Se stampiamo query
, vediamo questo:
> 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 rappresentazione stampata della stringa è sempre racchiusa tra ""
virgolette doppie, e come tale il "
interno bisogno di essere evasi. Quello che vuoi guardare è la stringa effettiva. Possiamo farlo con cat
o writeLines
- Preferisco quest'ultimo perché aggiunge il "\n"
alla fine della stringa 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>")
Nota come il "
ora non sfuggito. Questo è l'SQL che verrebbe eseguito dal server di database. Se è un SQL valido per il tuo DB, funzionerà.