質問に含めた内容に2つの問題があります。最初はタイプミスのように見えます。後:
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, '"')
^^^^^^^^^^^^^^^
一方の文字列をエスケープし、もう一方の文字列はエスケープしないことに注意してください。それらをエスケープする必要はありませんが、エスケープするかどうかは関係ありません。 '")'
も意味します 最後の文字列は、おそらく、発生しているエラーの本当の原因です。 paste
c
ではなく ここでもっと便利です。これらを組み合わせると、次のようになります。
query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")
直接使用できるもの:
dbSendQuery(con, query)
2番目の問題、そして多くの人が抱える問題は、オブジェクトの印刷された表現をオブジェクト自体と混同することです。 query
を出力する場合 、これが表示されます:
> 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>\")"
文字列の印刷表現は常に""
で囲まれます 二重引用符など、内部の"
エスケープする必要があります。見たいのは実際の文字列です。 cat
でそれを行うことができます またはwriteLines
-"\n"
を追加するので、後者の方が好きです。 文字列の最後まで自動的に:
> 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>")
"
に注目してください 現在は 逃げた。これは、データベースサーバーによって実行されるSQLです。それがDBに有効なSQLであれば、機能します。