我需要將資料從 R 上傳到 Oracle 資料庫。我遵循this question how to export data frame (R) into Oracle table的建議。
我使用代碼:
dbWriteTable(con_dwh, "table_db", table_in_R,
append =T, row.names=F, overwrite = F)
哪里con_dwh是到 Oracle 資料庫的 JDBC 連接。
但是我收到了錯誤訊息:
Error in .local(conn, statement, ...) :
execute JDBC update query failed in dbSendUpdate (NaN)
我對發生的錯誤有點困惑。
有人可以幫助我嗎?
uj5u.com熱心網友回復:
由于某些原因,列中dbWriteTable的 NA值num無法插入為 ,這對于列NULL很好。chr
所以解決方法是將 NA列中的替換num為有效數字 - i#m 使用 `0`。
如果您需要在表中以結尾,null請使用一些特殊數字并 UPDATE在資料庫中為空。
> df <- data.frame(col1 = c('x',NA,'y'), col2 = c(1,NA,NA))
>
> df
col1 col2
1 x 1
2 <NA> NA
3 y NA
> str(df)
'data.frame': 3 obs. of 2 variables:
$ col1: chr "x" NA "y"
$ col2: num 1 NA NA
>
> dbWriteTable(jdbcConnection,"TEST", df, rownames=FALSE, overwrite = TRUE, append = FALSE)
Fehler in .local(conn, statement, ...) :
execute JDBC update query failed in dbSendUpdate (NaN)
>
> df[is.na(df$col2),"col2"] <- 0
> df
col1 col2
1 x 1
2 <NA> 0
3 y 0
>
> dbWriteTable(jdbcConnection,"TEST", df, rownames=FALSE, overwrite = TRUE, append = FALSE)
>
在資料庫中
select * from test
COL1 COL2
-------- ----------
x 1
0
y 0
對于整數資料型別int,插入NA 有效,但插入的值-2147483648也不好。
df <- data.frame( id = c(as.integer(NA),as.integer(NA)) )
dbWriteTable(jdbcConnection,"TEST", df, rownames=FALSE, overwrite = TRUE, append = FALSE)
## OK but
select * from test
ID
-2147483648
-2147483648
這可能與 NA 作為整數的內部存盤有關。
R version 4.0.4 用和產生的音符RJDBC_0.2-8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414331.html
標籤:
上一篇:從varchar2表中選擇
下一篇:PLSQL格式號
