将 R data.frame 强制转换为 nz.data.frame 时出错
Posted
技术标签:
【中文标题】将 R data.frame 强制转换为 nz.data.frame 时出错【英文标题】:Error in coercing R data.frame to a nz.data.frame 【发布时间】:2017-06-16 08:53:01 【问题描述】:R 数据框中的一列中有“,”(逗号),因此,当我尝试将其转换为 netezza 数据框时,它会抛出以下错误:
nzQuery(sqlCommandUpload) 中的错误:HY008 51 操作已取消 01000 1 无法写入 nzlog/坏文件 01000 1 无法写入 nzlog/坏文件 HY000 46 错误:外部表:错误输入行数达到最大错误限制
如何在不更改数据的情况下实现这一目标?
使用这样的数据框,一切正常:
当数据框如下时出现错误:
library(nzr)
library(forecast)
library (reshape2)
library(doBy)
nzDisconnect()
nzConnectDSN('DSNInfo', force=FALSE , verbose=TRUE)
#read file
test2<-read.csv("test_df.csv", stringsAsFactors = F)
# convert to nz dataframe, no error
#nzdf.test2<-as.nz.data.frame(test2)
nzdf.d<-as.nz.data.frame(d)
# copy
#test<-test2
testd<-d
#replace one of the values containing a ","
#test$Category[1]<-"a,b"
testd$Category[1]<-"Bed, Bath & Towels"
# converting to nz gives error
#nzdf.test<-as.nz.data.frame(test)
nzdf.testd<-as.nz.data.frame(testd)
#remove ","
test$Category <- gsub(",","",test$Category)
# converting to nz dataframe, gives no error
nzdf.test<-as.nz.data.frame(test)
【问题讨论】:
显示您的 R 代码并告诉我们您正在使用哪些库。 @ScottMcG 使用所需的详细信息编辑了问题 【参考方案1】:您是否检查过您的数据中是否有空值 (NA)?我遇到了同样的问题,但是当我检查 Netezza-R 文档时,我发现您无法将 Null 写入另一个系统的 Netezza 表中。有提到在这种情况下使用 setOutputNull 函数。
因此,一种解决方法是用 R 数据框中的字符串“NULL”替换空值,这会使数值列变为 varchar,请注意。但幸运的是,“NULL”在您的 netezza 表中自动变为空。唯一的额外工作是您必须稍后将列转换回数字。
希望对你有帮助
【讨论】:
以上是关于将 R data.frame 强制转换为 nz.data.frame 时出错的主要内容,如果未能解决你的问题,请参考以下文章
将两列强制转换为 R 中的 1 列因子和 1 列对应值用于数据框