r - 在 R 中使用单引号的数据框列上的 sqlsave 命令使用转义字符?
问题描述
我在 R 中有一个包含多列的数据框。我想将此数据框写入 SQL Server 数据库表。我使用带有 sqlsave 命令的 RODBC 包。该命令运行良好,直到您点击其中一个名称带有单引号的列 (Kevin O'Donnell)。我想在 ' 之前写一个转义字符以将此行插入数据框中。
这是我尝试过的:
sqlSave(dbhandle,df,tablename = "DBTable",append = TRUE,
rownames = TRUE, colnames = FALSE, verbose = TRUE, safer = TRUE,
addPK = TRUE, typeInfo,
varTypes, fast = FALSE, test = FALSE, nastring = NULL)
#Error here is
sqlwrite returned
42000 102 [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'Donnell'.
42000 105 [Microsoft][SQL Server Native Client 11.0][SQL Server]Unclosed quotation mark after the character string ' )'
df$MerchantName = gsub("'","\'",df$MerchantName)
它没有用'替换'来帮助转义字符
解决方案
保留其余代码,但尝试将 gsub 行更改为:
df$MerchantName = gsub("'","\\'",df$MerchantName, fixed=TRUE)
请注意您需要如何转义转义,以确保它作为字符串的一部分传递给您的 sql 服务器所在的外部服务。
还要注意fixed=TRUE
以确保它确实做了它应该做的事情。
编辑:
添加了 fixed=TRUE 以跳过原本会取消双反斜杠的正则表达式评估。
编辑2:
试试这个转义:
df$MerchantName = gsub("'","''",df$MerchantName, fixed=TRUE)
有时使用双单引号来转义单引号。
推荐阅读
- python-3.x - TypeError:“Word2Vec”对象不可下标
- ssh - 试图获取 kubernetes 节点的 ssh
- woocommerce - Woocommerce:显示 0 定价可变产品的正常价格
- azure - Azure 数据工厂在我有权限时在 SFTP 上给出拒绝访问错误
- python-3.7 - 以纳秒为单位的 Python 格式日期
- ios - Xcode Memory Graph 报告释放对象的泄漏
- android - 如何自动化 Flutter 应用程序
- c++ - 是否需要从 C++ 中的调用函数恢复协程?
- r - 为 r 中的核密度估计图 (density.ppp) 选择像素大小
- python - 如何在 Python 中栅格化点数据并计算特定值的平均值(相当于 R 中的 raster() 和 rasterize() )?