【问题标题】:DBwrite Table Error in R MYSQL-UTF 8R MYSQL-UTF 8 中的 DBwrite 表错误
【发布时间】:2018-12-20 05:49:07
【问题描述】:

我有以下数据框

df<-data.frame(
  SLNO=c(1:5),
  sentence=c("Campaign Blast all channels Team may8t", "MDC Email Campaign 1 on  june 13", "Email camp Blastteam 09","Email camp Blastteam 09", "Email camp Blastteam 09thcamp"
)

我正在使用以下代码将数据框写入 SQL 表

    require(rmysql)
    require(rsqlite)
    name<-'username'
    password<-'userpass'
    hostname<-'1.2.3.4'
    port<-2222
    database<-'db'
    connection1<-dbConnect(dbDriver("MySQL"), user=username, 
      password=userpass, dbname= db, host=hostname, port=port)

我要写入的表已经存在于数据库 db-table 中

       dbWriteTable(custdbconn, value = df,
         name ='table' , overwrite=F, append=T,
         field.types=list(SlNo= 'int()', Sentence= 'text'), row.names=F)

我收到一条错误提示

     Invalid utf8 character string: 'MDC Email Campaign 1 on

如果我单独插入行,这些行将写入 SQL 数据库。 有没有办法在不显示错误的情况下编写整个表格。

【问题讨论】:

  • 不要在data.frame的列赋值中使用&lt;-,这里和=不一样。 (注意如何不保留列名?这是不理想的一个标志。)第二:我建议不要像这样使用require;你应该使用require 的唯一原因是如果你捕获它的返回值并基于它做一些事情(参考:yihui.name/en/2014/07/library-vs-requirer-pkgs.had.co.nz/namespace.html#search-path)。
  • 是的,先生。我注意到了

标签: r utf-8 rmysql rsqlite


【解决方案1】:

解决方案相当优雅和简单

   Encoding(df$sentence)<-"UTF-8"

这个问题解决了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2019-02-09
    • 2012-01-12
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多