簡體   English   中英

將R data.frame強制轉換為nz.data.frame時出錯

[英]Error in coercing R data.frame to a nz.data.frame

R數據幀中的一列中包含“,”(逗號),因此,當我嘗試將其轉換為netezza數據幀時,它使我陷入錯誤:

nzQuery(sqlCommandUpload)中的錯誤:HY008 51操作被取消01000 1無法寫入nzlog /錯誤的文件01000 1無法寫入nzlog /錯誤的文件HY000 46錯誤:外部表:錯誤的輸入行數已達到maxerrors限制

如何在不對數據進行任何更改的情況下實現這一目標?

使用這樣的數據框,一切正常: 沒有','的數據框

當數據框是這樣時,我得到錯誤: 帶有“,”的數據框

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)

您是否檢查數據中是否包含空值(NA)? 我曾經遇到過同樣的問題,但是當我查看Netezza-R文檔時,發現無法將Nulls從另一個系統寫入Netezza表中。 在這種情況下,提到了使用setOutputNull函數。

因此,一種解決方法是在R-dataframe中用字符串“ NULL”替換空值,請注意,這會使數字列變為varchar。 但是幸運的是,“ NULL”在您的netezza表中自動變為空。 唯一需要做的就是以后必須將列轉換回數字。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM