Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Substituindo aspas duplas com escape por aspas duplas em R


Vejo dois problemas com o que você incluiu na sua pergunta. A primeira parece um erro de digitação. Depois:
html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"   

Você tem:
query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
                                                  ^^^^^^^^^^^^^^^

Observe que você escapa de uma string, mas não da outra. Você não precisa escapar deles, mas não importa se você fizer isso. Você também quis dizer '")' para a última string que é, suspeito, a verdadeira fonte do erro que você está recebendo. paste em vez de c é mais útil aqui. Se eu combiná-los, teremos:
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")

que podemos usar diretamente:
dbSendQuery(con, query)

O segundo problema, e que muitas pessoas fazem, é confundir a representação impressa de um objeto com o próprio objeto. Se imprimirmos query , vemos isso:
> 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>\")"

A representação impressa da string é sempre colocada entre "" aspas duplas e, como tal, o " interno precisam ser escapados. O que você quer ver é a string real. Podemos fazer isso com cat ou writeLines - Eu prefiro o último, pois adiciona o "\n" ao final da string 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>")

Observe como o " agora não escapou. Esse é o SQL que seria executado pelo servidor de banco de dados. Se isso for um SQL válido para o seu banco de dados, ele funcionará.