sql >> Databáze >  >> RDS >> Mysql

Nahrazení dvojitých uvozovek dvojitými uvozovkami v R

V tom, co jste uvedl ve své otázce, vidím dva problémy. První vypadá jako překlep. Po:

html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"   

Máte:

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

Všimněte si, že jeden řetězec uniká, ale druhý ne. Nemusíte jim unikat, ale je jedno, jestli to uděláte. Mysleli jste také '")' pro poslední řetězec, který je, mám podezření, skutečným zdrojem chyby, kterou dostáváte. paste spíše než c je zde užitečnější. Když to zkombinuji, dostaneme:

query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")

které můžeme použít přímo:

dbSendQuery(con, query)

Druhý problém, a ten, který mnoho lidí dělá, je zaměnit tištěnou reprezentaci objektu s objektem samotným. Pokud vytiskneme query , vidíme toto:

> 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>\")"

Tištěná reprezentace řetězce je vždy uzavřena v "" dvojité uvozovky a jako takové vnitřní " je třeba uniknout. To, na co se chcete podívat, je skutečný řetězec. Můžeme to udělat pomocí cat nebo writeLines - Dávám přednost druhému, protože přidává "\n" na konec řetězce automaticky:

> 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>")

Všimněte si, jak " nyní nejsou utekl. To je SQL, který by byl proveden databázovým serverem. Pokud je to platné SQL pro vaši DB, bude to fungovat.



  1. 3 Nechutné I/O statistiky, které zpožďují výkon SQL dotazu

  2. Výstup databáze PHP neukazuje správnou cestu

  3. Trunc datum pole v mysql jako Oracle

  4. Jak nainstalovat PostgreSQL 12 na Fedoru 33