Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zastępowanie podwójnych cudzysłowów ze znakami ucieczki podwójnymi cudzysłowami w R

Widzę dwa problemy z tym, co zamieściłeś w swoim pytaniu. Pierwszy wygląda na literówkę. Po:

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

Masz:

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

Zauważ, że unikasz jednego ciągu, ale drugiego nie. Nie musisz im uciekać, ale to nie ma znaczenia, czy to zrobisz. Miałeś na myśli także '")' dla ostatniego ciągu, który, jak podejrzewam, jest prawdziwym źródłem otrzymywanego błędu. paste zamiast c jest tutaj bardziej przydatne. Jeśli je połączę, otrzymamy:

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

którego możemy użyć bezpośrednio:

dbSendQuery(con, query)

Drugim problemem, który robi wiele osób, jest pomylenie drukowanej reprezentacji obiektu z samym obiektem. Jeśli wypiszemy query , widzimy to:

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

Wydrukowana reprezentacja ciągu jest zawsze zawarta w "" podwójne cudzysłowy i jako taki wewnętrzny " trzeba uciec. To, na co chcesz spojrzeć, to rzeczywisty ciąg. Możemy to zrobić za pomocą cat lub writeLines - Wolę to drugie, ponieważ dodaje "\n" na końcu ciągu automagicznie:

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

Zwróć uwagę, jak " są teraz nie uciekł. To jest SQL, który zostałby wykonany przez serwer bazy danych. Jeśli to jest poprawne SQL dla Twojej bazy danych, to zadziała.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zobaczyć ciąg poleceń podczas używania parametrów MySqlCommand?

  2. Sequelize, MySQL - Filtrowanie wierszy w tabeli z wartościami kolumn JSON

  3. WYBIERZ DO AKTUALIZACJI przechowując całą tabelę w MySQL, a nie wiersz po wierszu

  4. Błąd SQL:1064, SQLState:42000 w @Query - JPA, MySQL, Hibernate

  5. Łączenie MySQL Azure z Javą