У меня есть таблица (df
), содержащая около 50 000 строк и 12 столбцов для записи в SAP HANA.Я использую библиотеку RJDBC
и пишу построчно следующим образом:
# Returns the sql statement to insert one row
build_insert_string <- function(db_output, row) {
row_string <- paste(row, collapse="','")
statement <- paste('INSERT INTO "', db_output$SCHEMA, '"."',db_output$table_name,'" (',db_output$string_of_columns,') VALUES (\'', row_string, '\');', sep='')
return(statement)
}
# Insert row by row
for(i in 1:nrow(df)){
tryCatch({ dbGetQuery(jdbcConnection, build_insert_string(db_output, df[i,])) }, error = function(e) {handle_db_errors(e)})
}
, где db_output
- список, содержащий выходные константы (схема, таблица и столбцы).
В настоящее времяДля написания таблицы требуется почти половина дня.Похоже, что HANA не поддерживает пакетные вставки, такие как:
INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
Кто-нибудь сталкивался с этой проблемой, и если да, нашли ли вы способ обойти ее и повысить эффективность записи?