2017-04-25 30 views
1

我要插入與R數據幀到現有的表:R數據幀到Oracle SQL表:在我的Oracle數據庫使用此代碼不能分配內存

sqlSave(connection, df, tablename = "oracle_table", append = TRUE) 

我得到的錯誤could not allocate memory。 我試圖只插入一行,但錯誤仍然出現。 Oracle目標表中某些字段的類型是memo

如何插入我的df在oracle表中? R數據幀的

結構:

$a: num 
$b: chr 

在Oracle數據庫目標表的結構:

a: number(10,0) 
b: CLOB 

實施例的數據集:

b <- c("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua","Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua At vero eos et accusam et justo duo dolores et ea rebum"," Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet"," Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua"," At vero eos et accusam et justo duo dolores et ea rebum Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua"," Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet"," Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua", " Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua","Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi"," Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat") 
df <- data.frame(A = seq(1:length(b)), B = b, C = tolower(gsub("[[:space:]]|[[:punct:]]", "", b))) 
sqlSave(connection, df, tablename = "ORACLE_TABLE", append = TRUE) 

會是更容易只是爲了節省整個df作爲我的Oracle數據庫中的表,而不是首先創建Oracle表?我怎麼能在R中做到這一點?

回答

1

我剛剛找到了如何把來自R數據幀到Oracle數據的基礎上使用ROracle:

require(ROracle) 
Con=dbConnect(dbDriver("Oracle"),"IP/SID",username="xxx",password="xxx") 
dbWriteTable(Con, "ORACLE_TABLE", df, row.names = TRUE, overwrite = TRUE) 

這是一個妥協的解決辦法,但至少我現在已經「插入」我的DF成分貝。

+0

如果您不想覆蓋現有記錄,也可以使用'append = TRUE'。 –