1

我有一个 R 例程,需要将第三方的文本写入 MySQL 数据库。该文本通常包含换行符。

很遗憾,

foobar <- as.data.frame(a=1, b='\n')
dbWriteTable(MySQL(), foobar, 'test')

创建一个包含两条记录的表;'\n' 生成记录中断和空记录。

RMySQL 有什么特别之处吗?这是一个众所周知的问题吗?看了很多遍,没看到有人讨论。有没有使用不同连接器的解决方法?

4

2 回答 2

1
con <- dbConnect(MySQL(), user='user', password='password')

foobar <- as.data.frame(a=1, b='\n')
foobar$b <- dbEscapeStrings(con, foobar$b)
dbWriteTable(con, foobar, 'test')
于 2014-07-21T16:30:05.000 回答
0

事实证明,这实际上很容易解决。

DBI 接口中有一个名为 dbEscapeStrings 的函数。它将字符串转换为一种形式,在这种形式中它们将以数据库和区域设置敏感的方式正确存储。如果在将字符串通过间隙之前以这种方式转换字符串,那么它们会正确存储在表中。

于 2013-03-02T21:43:48.843 回答