1
RからOracleに複数の行を挿入しようとしています。このためには、RからOracleへ複数の行を一度に挿入する方法
INSERT ALL
INTO mytable (col1, col2, col3, col4, col5) VALUES (ABC',1,'30-12-15', '30-12-15',89)
INTO mytable (col1, col2, col3, col4, col5) VALUES (ABC',2,'30-12-15', '31-12-15',96)
INTO mytable (col1, col2, col3, col4, col5) VALUES (ABC',3,'30-12-15', '03-01-16',92)
SELECT * FROM dual;
のようなクエリを作成する必要があります。ここではペースト機能が機能すると思いました。私はペースト機能を使用していたときにしかし、それはこの
temp_df <- data.frame(col1=c(rep('ABC',3)), col2=c(1,2,3), col3=rep('30-12-15',3),
col4=c('30-12-15','31-12-15','03-01-16'), col5=c(89,96,92))
> qry <- paste("INSERT ALL ", rep("INTO mytable (",3),
rep(paste(names(temp_df), collapse = ", "),3),
rep(") VALUES ", 3),
gsub('c','',(data.table(t(temp_df))[,paste(.SD,collapse=', ')])),
" SELECT * FROM dual", sep="")
> cat(qry)
INSERT ALL INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "1", "30-12-15", "30-12-15", "89"),
("ABC", "2", "30-12-15", "31-12-15", "96"),
("ABC", "3", "30-12-15", "03-01-16", "92") SELECT * FROM dual
INSERT ALL INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "1", "30-12-15", "30-12-15", "89"),
("ABC", "2", "30-12-15", "31-12-15", "96"),
("ABC", "3", "30-12-15", "03-01-16", "92") SELECT * FROM dual
INSERT ALL INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "1", "30-12-15", "30-12-15", "89"),
("ABC", "2", "30-12-15", "31-12-15", "96"),
("ABC", "3", "30-12-15", "03-01-16", "92") SELECT * FROM dual
のように働いているしかし、私は
INSERT ALL
INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "1", "30-12-15", "30-12-15", "89")
INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "2", "30-12-15", "31-12-15", "96")
INTO mytable (col1, col2, col3, col4, col5)
VALUES ("ABC", "3", "30-12-15", "03-01-16", "92")
SELECT * FROM dual
この上の任意のヘルプのような出力が必要ですか?あなたはINSERT ALL
なしで、そこで行われ、最終的には、最終的なクエリを作成するtogheter貼り付けるいるよう qr1<-"INSERT ALL"
し、クエリ:
ここでは機能しません。私の場合は、特定の値を計算するためにforループを使用する必要があり、各forループの終わりに、私はOracleに挿入する必要があるデータフレームを取得します。したがって、挿入される行の数は動的です。実際の問題はここで発生します。各タプルの前に "VALUES"が必要で、各列名タプルの前に "INSERT INTO mytable"が必要です。しかし、ここでは起こっていない。 –