7

R data.frame を Netezza テーブルに書き込もうとしています。約 55K 行あり、Java のメモリ制限として 4GB を設定しました (options(java.parameters = "-Xmx4096m"))

クエリ:

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() の結果を変数に割り当てようとしましたが、うまくいきませんでした。

どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1