Пиша някакъв html код в SQL база данни, използвайки RMySQL (но предполагам, че проблемът ми е по-скоро общ R въпрос, отколкото наистина свързан с SQL или RMySQL). Така че опитвам нещо подобно:
con <- RMySQL(...) # some connection
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, '"')
dbSendQuery(con,paste(query, collapse = ""))
Проблемът е, че поставянето на R ще замени двойните кавички в единични кавички (т.е. '"') с екранираната последователност \", т.е.:
> paste(query, collapse = "")
[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>\""
Ако променя единичните кавички във векторната заявка на двойни кавички и единичните кавички в html на двойни, тогава проблемът е от страната на символния низ html, тъй като тогава двойните кавички в html се заменят от екранираната последователност.
Кой е най-лесният начин да се справите със заместване на екранираните знаци?
Опитах gsub('\\\"','"',html)
, което не работи по предназначение и решенията, предложени в публикацията Игнориране на escape символи (обратни наклонени черти) в R низове, но не можах да го накарам да работи.
Благодаря за вниманието, Филип
paste
не замества с \, методътprint
ги вмъква. Вашият пример трябва да работи. Каква е грешката, която получавате? - person VitoshKa   schedule 15.01.2011)
в низаquery
, както споменах в отговора си, което, допускам, е причината да не работи. Подозирам, че тук се случват няколко неща, правописна грешка, водеща до грешка в SQL синтаксиса, и след това @Philipp забелязва скритото"
в отпечатаното представяне и събира две и две заедно, за да излезе с пет. - person Gavin Simpson   schedule 15.01.2011