SAP HANA: наиболее эффективный способ вставки / импорта данных в таблицы из файлов CSV

Мы хотим дать пользователю возможность загружать и вставлять / импортировать данные в таблицы. Данные пользователей находятся в файлах CSV.

Итак, мы подумали о трех возможностях:

  • Импорт директ через приложение XSJS -> (Пакет) Вставить каждую строку
  • Импорт через инструкцию IMPORT FROM
  • SDI (репликация)

В настоящее время мы предпочитаем прямой импорт (вставки XSJS), поскольку пользователь может открыть диалоговое окно выбора файла и выбрать файл. (Простота)

К сожалению, вставки очень медленные (20 мин / 1 миллион строк) .
Пакетная вставка сокращается примерно до 5 минут
Параллельный вызов XSJS пакетного импорта с пакетами по 100 КБ сокращается примерно до 1 мин.

Однако команда импорта CSV IMPORT FROM с 4 потоками выполняется намного быстрее, чем 1 минута (около 15 секунд).

Итак, вопрос в том, как быстро импортировать данные в HANA (желательно с технологией XSJS).

Системная среда

Мы создали пользовательский веб-интерфейс с XS Engine для выполнения различных задач, требующих большого объема данных.

Новая задача - загрузить данные в SAP HANA для дальнейшей обработки.

Данные в файлах CSV от компаний-партнеров.

Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
1 673
2

Ответы 2

Подача данных через XSJS - это подход, который требует, чтобы данные пересекали многие границы системы. Здесь обычно лучше использовать инструмент загрузки данных на основе JDBC / ODBC.

IMPORT и IMPORT FROM - это команды на стороне сервера, которым требуется доступ к общему ресурсу файловой системы, к которому также могут обращаться узлы SAP HANA.

Они в первую очередь предназначены для загрузки «технических» данных, например создание копий системы и перемещение данных разработчика / администратора. Конечный пользователь не является целевой аудиторией.

Учитывая, что вы упомянули, что ваши конечные пользователи должны иметь возможность загружать данные, предоставление им такого инструмента загрузки данных (возможно, даже написания простого инструмента самостоятельно) может быть здесь вариантом.

В качестве альтернативы использование SDI может быть жизнеспособным вариантом, если структура данных не меняется часто.

Спасибо, Ларс, за указание на намерение команды импорта.

Thorsten Niehues 17.08.2018 09:35

К сожалению, мы можем использовать только XSJS, поскольку мы еще не перешли на XSA (иначе мы бы использовали Java). Но также похоже, что пакетная вставка - это медленная часть, а не передача от клиента к HANA.

Thorsten Niehues 17.08.2018 09:39

Далее объяснил вариант использования в вопросе

Thorsten Niehues 17.08.2018 09:44

@Thorsten, как вы думаете, сможете ли вы поделиться решением? Заранее спасибо!

SuShuang 15.03.2019 17:06

@SuShuang обязательно посмотрите ответ - надеюсь, это поможет

Thorsten Niehues 20.03.2019 15:48

Мы провели несколько тестов с Java, которые были быстрыми (Java с многопоточностью в два раза быстрее, чем XSJS).

Поскольку Заказчику нужен веб-интерфейс, а Java Webstart устарел и имеет еще несколько проблем, мы теперь используем веб-решение:

  1. var conn = $.hdb.getConnection();
  2. conn.executeUpdate('INSERT INTO ' + schemaName + '.' + targetTableName + ' VALUES(' + placeholder + ')', argsArray);

Это важно

  • используйте более новое соединение $.hdb, а не соединение $.db (во многих руководствах используется соединение $.db.
  • использовать пакетную вставку

Другие вопросы по теме