Ik zie twee problemen met wat u in uw vraag hebt opgenomen. De eerste lijkt op een typfout. Na:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"
Je hebt:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
^^^^^^^^^^^^^^^
Merk op dat je aan de ene string ontsnapt, maar niet aan de andere. Je hoeft er niet aan te ontsnappen, maar het maakt niet uit of je dat doet. Je bedoelde ook '")'
voor de laatste string die, vermoed ik, de echte bron is van de fout die je krijgt. paste
in plaats van c
is hier handiger. Als ik deze combineer, krijgen we:
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
die we direct kunnen gebruiken:
dbSendQuery(con, query)
Het tweede probleem, en een probleem dat veel mensen maken, is om de gedrukte weergave van een object te verwarren met het object zelf. Als we query
afdrukken , zien we dit:
> 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>\")"
De gedrukte weergave van de string staat altijd tussen ""
dubbele aanhalingstekens, en als zodanig de interne "
hoeven te ontsnappen. Waar je naar wilt kijken is de eigenlijke string. Dat kunnen we doen met cat
of writeLines
- Ik geef de voorkeur aan het laatste omdat het de "\n"
. toevoegt automatisch naar het einde van de tekenreeks:
> 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>")
Merk op hoe de "
zijn nu niet ontsnapt. Dat is de SQL die door de databaseserver zou worden uitgevoerd. Als dat een geldige SQL is voor je database, dan zal het werken.