将R data.frame强制转换为nz.data.frame时出错

时间:2017-06-16 08:53:01

标签: r netezza

R dataframe中的一列中有“,”(逗号),因此,当我尝试将其转换为netezza数据框时,它会让我误以为:

  

nzQuery(sqlCommandUpload)出错:HY008 51操作已取消   01000 1无法写入nzlog / bad文件   01000 1无法写入nzlog / bad文件   HY000 46错误:外部表:达到最大错误限制的错误输入行数

如何在不对数据进行任何更改的情况下实现此目标?

使用这样的数据框,一切正常: data frame without ','

当数据帧如下时,我收到错误: Data frame with ','

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)

1 个答案:

答案 0 :(得分:1)

您是否检查过数据中是否有空值(NAs)?我遇到了同样的问题但是当我检查Netezza-R文档时,我发现你无法将Nulls写入另一个系统的Netezza表中。在这种情况下,提到了使用setOutputNull函数。

因此,解决方法是将空值替换为字符串&#34; NULL&#34;在您的R数据框中,这使得数字列成为varchar,请注意。但幸运的是&#34; NULL&#34;在您的netezza表中自动变为null。只需要额外的努力就是你必须稍后将列重新编号为数字。

希望这有帮助