R JDBC错误“无法检索JDBC结果集以插入...”

Kal*_*alC 5 r netezza rjdbc

我试图将R data.frame写入Netezza表。它有大约5.5万行,并且我将4GB设置为Java的内存限制(选项(java.parameters =“ -Xmx4096m”))

查询:

insert into MY_TABLE_NAME select * from external 'csv_file_containing_data_frame.csv' using (delim ',' remotesource 'jdbc');
Run Code Online (Sandbox Code Playgroud)

当我从诸如DbVisualizer之类的工具运行SQL时,上面的SQL 可以正常工作,但是当我尝试从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)
Run Code Online (Sandbox Code Playgroud)

错误信息:

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)
Run Code Online (Sandbox Code Playgroud)
  • dbWriteTable可以工作,但是速度太慢,无法使用。
  • 试图将dbSendQuery()的结果分配给一个变量,但是没有用。

任何帮助将不胜感激。谢谢!

Kal*_*alC 6

需要使用dbSendUpdate

dbSendUpdate(connWrite, str_insert_query[1])
Run Code Online (Sandbox Code Playgroud)