Ошибка таблицы DBwrite в R MYSQL-UTF 8

У меня есть следующий кадр данных

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. Есть ли способ написать всю эту таблицу без появления ошибки.


person Raghavan vmvs    schedule 12.07.2018    source источник
comment
Не используйте <- внутри назначения столбца data.frame, это не то же самое, что = здесь. (Обратите внимание, что имена столбцов не сохраняются? Это один из признаков того, что это не идеально.) Во-вторых: я не рекомендую использовать require таким образом; единственная причина, по которой вы должны когда-либо использовать require, заключается в том, что вы фиксируете возвращаемое значение и делаете что-то на его основе (ссылки: yihui.name/en/2014/07/library-vs-require и r-pkgs.had.co.nz/namespace.html#search-path).   -  person r2evans    schedule 12.07.2018
comment
да сэр. я это отметил   -  person Raghavan vmvs    schedule 12.07.2018


Ответы (1)


Решение довольно элегантное и простое

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

Это решило проблему

person Raghavan vmvs    schedule 12.07.2018