mysql - 将 NA 值从 r 加载到 sql
问题描述
我正在尝试将数据帧从 r 加载到 sql,并且无法让 NA 加载到 sql 中的等效 NULL。它们将作为空白单元格出现。示例数据:
data.frame(name = c('Sara', 'Matt', 'Kyle', 'Steve', 'Maggie', NA, 'Alex', 'Morgan'),
student_id = c(123,124,125,126,127,128,129,130),
score = c(78, 83, 91, NA, 88, 92, NA, 77))
表模式:student_score 列名称 (varchar)、student_id (int) 和 score (int)
代码:
load = "Insert into schema.student_score (name, student_id, score) values"
data = list()
for (i in seq(nrow(df))) {
info = paste0("('", df$name[i], "','",
df$student_id[i], "','",
df$score[i], "')")
data[[i]] = info
}
rows = do.call(rbind, data)
values = paste(rows[,1], collapse = ',')
send = paste0(load, values)
dbSendQuery(conn, send)
当它们被加载到 sql 中时,它就出来了
name student_id score
Sara 123 78
Matt 124 83
Kyle 125 91
Steve 126
Maggie 127 88
128 92
Alex 129
Morgan 130 77
我希望将空白值替换为 NULL
解决方案
在您的代码NA
中被翻译为"NA"
. 您需要全部'NA'
替换send
为NULL
. 只需在最后添加以下代码 -
send <- gsub("'NA'", "NULL", send)
send
"Insert into schema.student_score (name, student_id, score) values('Sara','123','78'),('Matt','124','83'),('Kyle','125','91'),('Steve','126',NULL),('Maggie','127','88'),(NULL,'128','92'),('Alex','129',NULL),('Morgan','130','77')"
推荐阅读
- javascript - 是否可以使用地理编码器 API/搜索框来搜索地图上的标记?
- python - discord py - 使用 on_command_error 进行错误处理
- reactjs - 警告:文本内容不匹配。服务器:“我出去了”客户端:“我进来了”div
- c++ - 关于矩阵计算速度的问题MATLAB VS。C++
- sql - SQL DATIME 转换问题
- python - 如何在mysql python中将外键设置为NULL
- java - 单击时更改按钮图像(或颜色)
- android - 无法从数据库中的表复制数据并将其复制到另一个具有Android房间的数据库中的另一个表
- amazon-web-services - 从 dynamo db 表中获取属性
- ios - 在 ForEach Swift UI 中显示数组的值