我在R
中有一些字符串,应使用MySQL
写入RODBC
表。
问题是我不知道如何处理字符串中的引号以获取MySQL错误,但也不会弄乱文本?
我确信解决方案有点简单,但目前我有点陷入自己的想法 - 我没有开箱即用...逃避逃避两次反冲浪或两次反击逃避两次(或8,只是在保存方面)
示例:
require(RODBC)
con <- odbcConnect("MyMySQLDatabase")
string <- "What's up?"
query <- "INSERT INTO table (textcolumn) VALUES"
value <- paste0( "('", string, "')" )
sql <- paste( query, value, ";")
res <- sqlQuery(con, sql)
(如何处理我从带有可能的单引号和双引号的文件中读取的文本?)
答案 0 :(得分:7)
如果正在使用RMySQL
,则套餐提供的 dbEscapeStrings()
功能可能是最佳选择。该功能负责逃避遵守MySQL设定的标准。 LINK
require(RMySQL)
mysql <- dbDriver("MySQL")
con <- dbConnect( mysql, user="superuser",
password="totallyawesomeandsavepassword",
host="dbhost.hosthome.dom",
dbname="awesome"
)
dbEscapeStrings(con,"'''''fhf'''''''''rh'''''''''")
# [1] "\\'\\'\\'\\'\\'fhf\\'\\'\\'\\'\\'\\'\\'\\'\\'rh\\'\\'\\'\\'\\'\\'\\'\\'\\'"
RMySQL
手册指出:
dbEscapeStrings目前,只有MySQL驱动程序实现此方法
答案 1 :(得分:4)
我首先加倍引号:
string <- gsub("'","''",string)
这会使报价翻倍:
string
[1] "What''s up?"