mysql - 将列表值从 int & num 转换/更新/类型转换为字符串

标签 mysql r rscript

我正在使用 R 脚本从 MySQL 数据库中检索数据,然后将其写入 CSV,但我遇到了一个问题,我想作为字符串写出的两列数据正在被写出作为整数和数字(在本例中为科学记数法)。

我希望将这些写成字符串值,但我发现这不是一项简单的任务,尽管进行了相当多的谷歌搜索和实验。

相关代码:

conn <- dbConnect(MySQL(), host = "127.0.0.1", user="REDACTED", password="REDACTED", dbname="REDACTED", port=8906)
type_data <- dbGetQuery(conn, paste("SELECT * FROM ", arg, " WHERE 1 LIMIT 10", sep=""))

# Problem: "Subscribed" and "TimeUpdated" are coming through as numbers instead of strings

write.csv(type_data, paste("./",arg,".csv", sep=""), row.names=F)
dbDisconnect(conn)

期望的结果:

"Id","EntityId","EntityType","CommunicationType","Subscribed","TimeUpdated"
"0002INKRyUolIrjG5DbUa0lDqUjxt","4374484","PERSON","MFS","1","1385297883000000000"
"0004WaXpmvbOh3WG3hd6kQtPINibv","8361929","PERSON","MFS","1","1437798832740631885"
"0005l1fy1TJiFhyiEK2IXRCxfqee5","4197014","PERSON","SURVEYS_AND_POLLS","0","1146917239000000000"
"0008Qb2ra1PoSLgbumc2wmDfvexx8","4155704","PERSON","MFS","1","1345053223000000000"
"000C1IKgHrFaqmlHlKGGhigGyoaw4","4515071","PERSON","PARTNER","1","1215098959000000000"
"000Czw8Gv5w3eNoOmOFVTKLIuc2ti","4372360","PERSON","MFS","1","1384952236000000000"
"000DOsk9xlYKvs11PzZFRgmOpYfiA","4347384","PERSON","SURVEYS_AND_POLLS","1","1177513307000000000"
"000IQ4TKYHAbb334zFYdWVCZZfMYo","4470083","PERSON","PARTNER","1","1446945757133940400"
"000LbifV4rUa2MhxFlVZ52PSek5kG","499194","PERSON","SURVEYS_AND_POLLS","0","1097867573000000000"

实际结果:

"Id","EntityId","EntityType","CommunicationType","Subscribed","TimeUpdated"
"0002INKRyUolIrjG5DbUa0lDqUjxt","4374484","PERSON","MFS",1,1.385297883e+18
"0004WaXpmvbOh3WG3hd6kQtPINibv","8361929","PERSON","MFS",1,1437798832740631808
"0005l1fy1TJiFhyiEK2IXRCxfqee5","4197014","PERSON","SURVEYS_AND_POLLS",0,1.146917239e+18
"0008Qb2ra1PoSLgbumc2wmDfvexx8","4155704","PERSON","MFS",1,1.345053223e+18
"000C1IKgHrFaqmlHlKGGhigGyoaw4","4515071","PERSON","PARTNER",1,1.215098959e+18
"000Czw8Gv5w3eNoOmOFVTKLIuc2ti","4372360","PERSON","MFS",1,1.384952236e+18
"000DOsk9xlYKvs11PzZFRgmOpYfiA","4347384","PERSON","SURVEYS_AND_POLLS",1,1.177513307e+18
"000IQ4TKYHAbb334zFYdWVCZZfMYo","4470083","PERSON","PARTNER",1,1446945757133940480
"000LbifV4rUa2MhxFlVZ52PSek5kG","499194","PERSON","SURVEYS_AND_POLLS",0,1.097867573e+18
"000OWvUHdmjeL34XzuVLmHQBple7X","4176205","PERSON","MFS",1,1.143985154e+18

非常感谢您的帮助!

最佳答案

感谢@Bernhard 提供的帮助 - 这是一个可行的解决方案。

options(scipen = 999) # so that TimeUpdated isn't outputted using scientific notation

conn <- dbConnect(MySQL(), host = "127.0.0.1", user="REDACTED", password="REDACTED", dbname="REDACTED", port=8906)
type_data <- dbGetQuery(conn, paste("SELECT * FROM ", arg, " WHERE 1", sep=""))

# convert the subscribed and timeupdated columns to strings
type_data$Subscribed <- as.character(type_data$Subscribed)
type_data$TimeUpdated <- as.character(type_data$TimeUpdated)

write.csv(type_data, paste(args[[1]], "/", arg, ".csv", sep=""), row.names=F)
dbDisconnect(conn)

关于mysql - 将列表值从 int & num 转换/更新/类型转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353908/

相关文章:

r - 无法使用 textbf 写粗体字符

r - 从 R session 中设置 --args 的值

r - 在 R/3.0.2 中安装 minqa 时出错

php - mysql 代码 有什么方法可以解决这个问题吗?子字段列

mysql - 使用 mappedBy 的 Eclipse 链接到 Hibernate 迁移错误

r - 在 NAMESPACE 中使用 Roxygen 制作 S3method

R:使用共享名称模式的多列将数据 reshape 为更长的格式

r - 使用runuser时如何导出变量

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

MySQL 字符编码更改。是否保留了数据完整性?