R dataframe中的一列中有“,”(逗号),因此,当我尝试将其转换为netezza数据框时,它会让我误以为:
nzQuery(sqlCommandUpload)出错:HY008 51操作已取消 01000 1无法写入nzlog / bad文件 01000 1无法写入nzlog / bad文件 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)
答案 0 :(得分:1)
您是否检查过数据中是否有空值(NAs)?我遇到了同样的问题但是当我检查Netezza-R文档时,我发现你无法将Nulls写入另一个系统的Netezza表中。在这种情况下,提到了使用setOutputNull函数。
因此,解决方法是将空值替换为字符串&#34; NULL&#34;在您的R数据框中,这使得数字列成为varchar,请注意。但幸运的是&#34; NULL&#34;在您的netezza表中自动变为null。只需要额外的努力就是你必须稍后将列重新编号为数字。
希望这有帮助