2017-01-16 4 views
0

私はバルーンでhanaに挿入したいと思っています。現在、私は結果セットから行ごとに挿入するためにJavaを使用しています。一度に複数の行を挿入する方法はありますか?それは可能ですか? (私は輸入のみの一括挿入をしたくない)私は全面的に検索し、良い答えを見つけることができませんでした。HANAでバルクインサートが可能ですか?

+0

は正確にあなたが何をしたいのかについて具体的にしてください、例えば使用する言語またはツールHANAは大量データの読み込みをサポートしています。すべてのデータは、使用する内容によって異なります。 –

+0

私は結果セットからデータを挿入するためにJavaを使用しています。しかし、私は行ごとに挿入すると、より多くの時間を消費します。一括で挿入する方法はありますか? (一度に複数の行を挿入する) – RKR

答えて

1

JAVA/JDBCコードの場合、いわゆるバッチインタフェースが存在します。ここ は、私がテストのために使われていた古い例です:

myDBconn.setAutoCommit(false); 

PreparedStatement insStmt = myDBconn 
     .prepareStatement("INSERT INTO EFASHION.SHOP_FACTS_INS_DEMO VALUES" 
       + " (?, ?, ?, ?, ?, ?, ?, ? )"); 

for (int i = 1; i <= LOOPCNT; i++) { 
    myfacts.createNewFact(); // create a JAVA object with new data 

    // prepare the new data for the batch 
    // note that this is a typed assignment. 
    insStmt.setInt(1, i); 
    insStmt.setInt(2, myfacts.article_id); 
    insStmt.setInt(3, myfacts.color_code); 
    insStmt.setInt(4, myfacts.week_id); 
    insStmt.setInt(5, myfacts.shop_id); 
    insStmt.setDouble(6, myfacts.margin); 
    insStmt.setDouble(7, myfacts.amount_sold); 
    insStmt.setInt(8, myfacts.quantity_sold); 

    // add the new data to the batch 
    insStmt.addBatch(); 

    // limit the batch size, to prevent client side out of memory errors. 
    // but DON'T commit yet! 
    // Remember the data in the current batch is kept in client 
    // memory as long as we don't send it to the HANA server 
    if (i % BATCHSIZE == 0) { 
     // executeBatch returns the number of affected rows. 
     // if we want to use this in the application we just keep adding this up 
     affectedRows += insStmt.executeBatch(); 
    } 
} 
// the final batch execution for whatever remained in the 
// last batch 
affectedRows += insStmt.executeBatch(); 

// finally commit 
myDBconn.commit(); 

これをフォローする問題にはならないので、JDBCのドキュメンタリーに記載されているすべての。

備考:ARRAYデータ型は、(単一プリペアドステートメントのためにも、バッチのためでもない)はサポートされていません - ちょうどあなたがやりたいことである場合には...

+0

@ Lars.Br次に、HANAに配列をアップロードするには?私は、クエリを実行し、結果セットの配列を取得しますが、 'insStmt.setArray(9、MyArrayという)以来、HANAにそれを挿入する方法を、私の挿入satementは' INSERT INTO EFASHION.SHOP_FACTS_INS_DEMOのVALUES llike探す場所 '「 +」を動作しませんでした(?????????、、、、、、、、ARRAY()) ");'しかし、私は手動で 'INSERT INTO EFASHION.SHOP_FACTS_INS_DEMOは、値のように挿入すると、"( + "を、??? 、?、?、?、?、ARRAY(1,2,3)) ");'うまく動作します。 – RKR

+0

この上の既存の議論を確認してください:http://stackoverflow.com/questions/40102034/import-array-type-in​​to-hana/40378906#40378906とhttp://stackoverflow.com/questions/41338263/upload-an -array・イン・花/ 41353326#41353326また –

+0

:あなたは配列の挿入のために大量のデータのロードを求めません。そのような特定のレベルで尋ねるときは、適切な用語を使用してください。ありがとう。 –

関連する問題