Виждам два проблема с това, което сте включили във вашия въпрос. Първото изглежда като печатна грешка. След:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"
Имате:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
^^^^^^^^^^^^^^^
Забележете, че избягвате единия низ, но не и другия. Не е нужно да им избягвате, но няма значение дали го правите. Имахте предвид и '")'
за последния низ, който, подозирам, е истинският източник на грешката, която получавате. paste
вместо c
тук е по-полезно. Ако комбинирам тези, получаваме:
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
които можем да използваме директно:
dbSendQuery(con, query)
Вторият проблем, който много хора правят, е да объркат печатното представяне на обект със самия обект. Ако отпечатаме query
, виждаме това:
> 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>\")"
Отпечатаното представяне на низа винаги е затворено в ""
двойни кавички и като такива вътрешният "
трябва да се избяга. Това, което искате да разгледате, е действителният низ. Можем да направим това с cat
или writeLines
- Предпочитам последното, тъй като добавя "\n"
до края на низа автоматично:
> 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>")
Забележете как "
сега не избягал. Това е SQL, който ще се изпълнява от сървъра на базата данни. Ако това е валиден SQL за вашата DB, тогава ще работи.