2017-01-16 17 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? Я запрашиваю и получаю массив в результирующем наборе, но как вставить его в HANA, так как 'insStmt.setArray (9, myArray);' не работал, где моя вкладка выглядит как 'INSERT INTO EFASHION.SHOP_FACTS_INS_DEMO VALUES ' + (?,?,?,?,?,?,?,?, ARRAY (?)) ").' Но когда я вручную вставляю как 'INSERT INTO EFASHION.SHOP_FACTS_INS_DEMO VALUES ' +" (?,?,? ,?,?,?,?,?, ARRAY (1,2,3)) "),' отлично работает. – RKR

+0

Пожалуйста, проверьте существующие обсуждения по этому вопросу: http://stackoverflow.com/questions/40102034/import-array-type-into-hana/40378906#40378906 и http://stackoverflow.com/questions/41338263/upload-an -array-in-hana/41353326 # 41353326 –

+0

Также: вы запросили загрузку данных BULK, а не вставки ARRAY. Обязательно используйте правильную терминологию при запросе на определенном уровне. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^