我需要将 SAS 传输文件 (.xpt) 导入 MySQL。 因为我没有 SAS,所以我试过了 a) 首先在 R 中导入 .xpt b) 然后使用 RMySQL 库中的 dbWriteTable 从数据框创建一个表。
问题在于数据框包含 ISO8859 字符,而 MySQL(或 dbWriteTable?)需要 UTF-8。 (详细说明:精确度数字符,在ISO8859中为B0,在UTF8中为C2B0) 我收到以下输出:
dbWriteTable(con,"new_table",mydata,overwrite=T)
.local(conn, statement, ...) 中的 Fehler:
无法运行语句:无效的 utf8 字符串:'Hallo'
>
所以我尝试使用 iconv(mydata,“ISO8859-1”,“UTF8”)之类的 iconv 转换数据,但它似乎只能反过来工作(它正确地将 UTF8 转换为 ISO8859,但反过来却不行).
然后我尝试了很多
SET character_set_client = latin1;
SET character_set_results = latin1;
SET character_set_connection = latin1;
但没有任何运气。
任何帮助将不胜感激
最佳答案
我找到了一个我想分享的解决方法:
由于 iconv 仅适用于 UTF8->ISO8859,这没有用,但您可以:
- 使用 fileEncoding="utf8"将数据帧写入临时文件
- 读一遍
然后使用 dbWriteTable
write.table(mydata,file="tmp.txt", fileEncoding ="utf8")
mydata_utf8 <- read.table(file="tmp.txt",encoding="utf8") dbWriteTable(con,"new_table",mydata_utf8,overwrite=T)
关于mysql - 在 R 中将 ISO8859 数据写入 MySQL(错误 :"could not run statement: Invalid utf8 character string"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475451/