Mysql
 sql >> Database >  >> RDS >> Mysql

Sostituzione delle virgolette doppie sfuggite con virgolette doppie in R

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à.