2017-03-13 44 views
1

我正在嘗試將R data.frame寫入Netezza表。它有大約55K行,我已經設置爲4GB的內存限制爲Java(選項(java.parameters = 「-Xmx4096m」))R JDBC錯誤「無法檢索JDBC結果集以插入...」

查詢:

insert into MY_TABLE_NAME select * from external 'csv_file_containing_data_frame.csv' using (delim ',' remotesource 'jdbc'); 

SQL的上面一行作品當我從DbVisualizer這樣的工具運行它時沒有任何問題,但是當我嘗試從RStudio運行它時出現以下錯誤。

R代碼裏面:

driver <- JDBC(driverClass="org.netezza.Driver", classPath = "drivers//nzjdbc.jar", "'") 

connWrite <- dbConnect(driver, "jdbc:netezza://DB_SERVER:1234//DB_NAME", username, password) 

str_insert_query <- paste(
    "insert into MY_TABLE select * from external '", OutputFile , "' using (delim ',' remotesource 'jdbc');", sep = "" 

dbSendQuery(connWrite, str_insert_query[1]) 

dbDisconnect(connWrite) 

錯誤消息:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", : 
    Unable to retrieve JDBC result set for insert into MY_TABLE select * from external 'C:/.../csv_file_containing_data_frame.csv' using (delim ',' remotesource 'jdbc'); (netezza.bad.query.result) 
  • dbWriteTable作品但是如此之慢,以致它不能被使用。
  • 試圖將dbSendQuery()的結果賦值給一個變量,但它的 沒有工作。

任何幫助將不勝感激。謝謝!

回答

0

需要使用dbSendUpdate

dbSendUpdate(connWrite, str_insert_query[1])