出现问题的原因是 R 中存在三个(可能更多)不同的值,而这些值并未具体定义。它是“Inf”、“NaN”或“NA”。现在 dbWriteTable 可以通过在将其移动到 SQL 时将其转换为“NULL”来处理 NA。但是,“NaN”和“Inf”无法识别,因此会出现“检查源数据是否存在无效值”错误。修复如下:
假设这是您要写入 SQL 的表:
Tablename: "df"
USER quality
1 Inf
2 NaN
3 0.3
您要做的第一件事是将所有“NaN”转换为“NA”,因为 dbWriteTable 可以识别这些。这可以简单地通过以下方式完成:
df[is.na(df)] <- NA
那么你仍然有你的“Inf”值。不幸的是,我还没有找到一种简单的方法来一行浏览整个表格。但检查哪些列有“Inf”并一一执行,如下所示:
df$quality[is.nan(df$quality)] <- NA
如果您的表已清理干净,则不应出现这些错误。这是如何使用 dbWriteTable 的另一个示例,只是为了让事情更清楚:
dbWriteTable(ODBCconnectionname, DBMStablename, YourRtablename,
field.types = c(USER="integer",
quality="float(53)",
))
在此页面上检查您需要哪些数据类型:https://www.w3schools.com/sql/sql_datatypes.asp https://www.w3schools.com/sql/sql_datatypes.asp
如果您需要更多信息,请PM我。