1

サードパーティから MySQL データベースにテキストを書き込む必要がある R ルーチンがあります。そのテキストには改行が含まれていることがよくあります。

不運にも、

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

2 つのレコードを持つテーブルを作成します。'\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 に答える