2017-06-16 75 views
0

R dataframe中的一列中有“,”(逗号),因此,当我尝试将其转换为netezza数据框时,它抛出以下错误:将R data.frame强制转换为nz.data.frame的错误

Error in nzQuery(sqlCommandUpload) : HY008 51 Operation canceled 01000 1 Unable to write nzlog/bad files 01000 1 Unable to write nzlog/bad files HY000 46 ERROR: External Table : count of bad input rows reached maxerrors limit

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

有了这样的数据帧,一切工作正常: 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) 
+0

显示您的R代码,并告诉我们您正在使用哪些库。 – ScottMcG

+0

@ScottMcG编辑了需要的细节问题 –

回答

1

你检查,如果你有空(NAS)你的数据?我遇到了同样的问题,但是当我检查Netezza-R文档时,我发现你不能将Null写入另一个系统的Netezza表中。在这种情况下,提及使用setOutputNull函数。

因此,一种解决方法是用R-dataframe中的字符串“NULL”替换空值,这会使数值列变成varchar,介意你。但幸运的是,“NULL”会自动在您的netezza表中变为空。只有额外的努力是,你不得不在晚些时候将列再次转换为数字。

希望这有助于

相关问题