2016-08-16 10 views
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"

し、クエリ:

答えて

0

は、私はそれを行うための最も簡単な方法は、最初のようなものを作成していると思います。

+0

ここでは機能しません。私の場合は、特定の値を計算するためにforループを使用する必要があり、各forループの終わりに、私はOracleに挿入する必要があるデータフレームを取得します。したがって、挿入される行の数は動的です。実際の問題はここで発生します。各タプルの前に "VALUES"が必要で、各列名タプルの前に "INSERT INTO mytable"が必要です。しかし、ここでは起こっていない。 –

関連する問題