Войти

CSV-uploader

Дата публикации: 18.07.2025

Чаще всего для загрузки данных в БД Витрины данных используется загрузчик CSV-uploader. Он  поставляется в стандартном пакете с витриной версии Lite, а также устанавливается как компонент витрины версии Стандарт (установка основных компонентов описана в статье – Установка витрины в конфигурации стандарт. Минимальный набор).

Основные преимущества использования CSV-uploader:


  • Возможность загрузки больших объёмов данных:

CSV-uploader позволяет загружать большие наборы данных, превышающие лимит в 10 000 строк.


  • Автоматическое сопоставление столбцов:

CSV-uploader использует интеллектуальные алгоритмы для автоматического сопоставления столбцов, что упрощает работу пользователей.


  • Проверка данных на стороне клиента:

Перед отправкой файла пользователи могут исправить ошибки загрузки. Это гарантирует, что загруженные данные чистые и готовы к использованию.


  • Простота использования:

Простой интерфейс приложения делает загрузку файла лёгкой и интуитивно понятной. 


  • Безопасность данных:

Полное шифрование данных пользователей как при передаче, так и при хранении.


  • Настройка параметров:

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

К недостаткам CSV-uploader относятся:


  • Проблемы с очень большими файлами:

 У инструмента могут быть ограничения по размеру файла, и при работе с очень большими файлами возникают сложности. Чтобы решить проблему, можно разделить файл на части.


  • Несоответствие заголовков:

Некоторые инструменты не позволяют легко сопоставлять заголовки в CSV-файле с ожиданиями приложения. Также проблемы могут возникать, если ожидаемые столбцы находятся в неправильном порядке или отсутствуют необходимые поля.


  • Ошибки перевода данных:

Если в файле есть нестандартные символы или данные закодированы, то импорт данных не состоится. Перед загрузкой рекомендуется конвертировать данные в UTF-8 без BOM. Также чтобы решить проблему, нужно обратить внимание на сообщения об ошибках, указывающие на наличие нестандартных символов, и отредактировать их в файле.


  • Проблемы с типами данных:

Инструмент загрузки CSV-uploader обычно ожидает определённый тип данных. Например, если ввести дату там, где должна быть сумма в долларах, загрузка CSV-файла может прерваться ошибкой.


  • Отсутствие необходимых данных:

Для загрузки могут потребоваться определённые наборы данных. Например, если загружать список продуктов в систему управления запасами, но нет определённого столбца, то загрузка CSV-файла может прерваться ошибкой.


  • Неподходящие форматы:

Данные могут быть не в нужном формате. Например, если в CSV-файле номера телефонов в формате 5555555555, а инструмент CSV-импорта требует формат (555)555-5555, нужно отредактировать все экземпляры и попробовать загрузку снова.

Запуск Web-интерфейса CSV-uploader

Запуск Web-интерфейса CSV-uploader:

  1.   Из Витрины данных конфигурации Lite:

Запуск Web-интерфейса приложения осуществляется через браузер. В адресной строке браузера необходимо указать адрес сервера, на котором производилась установка витрины конфигурации Lite, порт по умолчанию 8080 (Рисунок 1):

Рисунок 1 Web-интерфейс CSV-uploader.png

Рисунок 1 – Web-интерфейс CSV-uploader

  2.   Из Витрины данных конфигурации Стандарт:

Запуск Web-интерфейса приложения осуществляется через браузер. В адресной строке браузера необходимо указать адрес сервера, на котором производилась установка витрины конфигурации Стандарт, порт по умолчанию 8087 (Рисунок 2):

Рисунок 2 Web-интерфейс CSV-uploader.png

Рисунок 2 – Web-интерфейс CSV-uploader

Чтобы проверить запущен ли CSV-uploader, необходимо:

  1.   В Витрине данных конфигурации Lite:

Необходимо перейти в инструмент управления контейнерами Portainer. Для этого в адресной строке браузера необходимо указать адрес сервера, на котором производилась установка витрины конфигурации Lite, порт по умолчанию 900.

Также через Portainer можно остановить/перезапустить контейнер, используя кнопки переключения на панели быстрых действий (Рисунок 3):

Рисунок 3 Web-интерфейс portainer. Управление работы контейнеров.png

Рисунок 3 – Web-интерфейс Portainer. Управление работы контейнеров

  2.   В Витрине данных конфигурации Стандарт:


  •  Если Витрина данных была развёрнута без оркестратора, то необходимо:

           1)     Перейти на сервер, где установлено приложение CSV-uploader;
           2)     На сервере необходимо выполнить команду: docker ps.

 После чего можно убедиться, что контейнер приложения установлен и запущен (Рисунок 4):

Рисунок 4 Проверка работы контейнера csv-uploader.png

Рисунок 4 – Проверка работы контейнера csv-uploader


  • Если Витрина данных была развёрнута через Datamart Studio:

          1)     Необходимо перейти в оркестратор Витрины данных Datamart Studio.
          2)     Открыть инсталляции Витрины/Услуги и убедиться, что приложение установлено (Рисунок 5):

Рисунок 5 Web-интерфейс Datamart Studio. Инсталляция csv_uploader.png

Рисунок 5 – Web-интерфейс Datamart Studio. Инсталляция csv_uploade

Загрузка структуры витрины в CSV-uploader

Структура Витрины данных (ВД) создаётся в ЕИП НСУД. Там же, после создания, её можно выгрузить в формате .xml, для этого: 

          1)     Необходимо перейти в карточку витрины.
          2)     На правой панели нажать на Сформировать XML версии ВД (Рисунок 6):

Рисунок 6 ЕИП НСУД. Просмотр карточки Витрины данных (ВД).png

Рисунок 6 – ЕИП НСУД. Просмотр карточки Витрины данных (ВД)

          3)     После нажатия сформируется .xml, который необходимо скачать. Для этого необходимо нажать на XML версии ВД (Рисунок 7):

Рисунок 7 ЕИП НСУД. Загрузка XML версии ВД.png

Рисунок 7 – ЕИП НСУД. Загрузка XML версии ВД

          4)     Для того, чтобы загрузить структуру витрины, откройте Web-интерфейс CSV-uploader и перейдите во вкладку Загрузка структуры (Рисунок 8). 
          5)     Выберите для загрузки ранее сохранённый .xml файл:

Рисунок 8 Загрузка структуры витрины.png

Рисунок 8 – Загрузка структуры витрины

Загрузка данных через CSV-uploader:

  1.   Для загрузки данных через CSV-uploader рекомендуется предварительно выгрузить файл-шаблон (Рисунок 9):

Рисунок 9 Вкладка Выгрузить шаблон.png

Рисунок 9 – Вкладка «Выгрузить шаблон»

  2.   После выгрузки шаблон необходимо заполнить данными. 

  3.   Далее перейти во вкладку Загрузить, выбрать заполненный csv-шаблон и нажать «Загрузить» (Рисунок 10):

Рисунок 10 Вкладка Загрузить.png

Рисунок 10 – Вкладка «Загрузить»

Ошибки при работе с CSV-uploader

  1.   При загрузке структуры витрины из ЕИП НСУД всплывает следующая ошибка:

Ошибка генерации таблиц по XML [java.lang.IllegalStateException: java.sql.SQLException: java.sql.SQLException: Error executing query [create table test_datamart.sir_test_datamart (test_datamart_id INT, name VARCHAR, use VARCHAR, primary key (test_datamart_id)) distributed by (test_datamart_id)]]

В данном примере uploader не принимает поле с названием USE. Все зарезервированные слова воспринимаются в Витрине данных как тип.

Пример: попытка загрузить структуру витрины, которая имеет поле с наименованием Date, завершилась ошибкой. 

Причина: слово Date является зарезервированным словом (Рисунок 11).

Рисунок 11 Ошибка при использовании зарезервированного слова в структуре витрины.jpg

Рисунок 11 – Ошибка при использовании зарезервированного слова в структуре витрины

  Примечание

 С основным перечнем зарезервированных слов можно ознакомиться в просторе

  2.   При загрузке данных через CSV-uploader в витрине версии Lite всплывает ошибка (Рисунок 12):

Ошибка обновления данных таблицы по запросу [Ошибка загрузки дельты [ru.datamart.prostore.jdbc.exception.DtmSqlException: Error executing query [INSERT INTO gispdatamart.product_catalog SELECT * FROM gispdatamart.product_catalog_ext]]]

Рисунок 12 Ошибка обновления данных таблицы.png

Рисунок 12 – Ошибка обновления данных таблицы

Необходимо проверить логи контейнера query-execution:

В логах можно увидеть следующую ошибку:

ERROR r.d.p.j.p.http.HttpReaderService - Unsuccessful response
ru.datamart.prostore.jdbc.exception.DtmSqlException: Error getting plugin status: ADP

Она означает, что нет связи с postgres.

Решение: рестарт витрины.

  Примечание

 Как правильно сделать рестарт витрины через portainer описано в Типовых вопросах по эксплуатации Витрины данных

  3.   В ходе загрузки данных через CSV-uploader в витрине версии Lite логе query-execution возникает серия ошибок типа:

  • ERROR r.d.p.j.p.http.HttpReaderService - Unsuccessful responseru.datamart.prostore.jdbc.exception.DtmSqlException: Delta closed
  • ERROR r.i.d.c.u.s.i.ProstoreExecutorServiceImpl - Ошибка загрузки дельты

Решение: необходимо обновить версию витрины.

  4.   При загрузке данных через CSV-uploader всплывает ошибка вида:

ERROR r.i.d.c.u.s.impl.UploadServiceImpl - Не удалось отправить сообщение в кафку
org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server will accept.

Решение: необходимо уменьшить параметр CHUNK_ROW_COUNT в контейнере CSV-uploader с 400 до 350 и произвести полный рестарт.

  5.   При старте CSV-uploader в витрине версии Lite ошибка:

error response from daemon no command specified

Решение: нужно в custom.yml и install.yml убрать лишние модули и оставить только нужный CSV-uploader.

  6.   При загрузке данных через CSV-uploader всплывает ошибка (Рисунок 13):

Ошибка обновления данных таблицы по запросу [Ошибка загрузки дельты [Call(…) timed out at … after 1 attempt(s)]]

Рисунок 13 Ошибка обновления данных таблицы.jpg

Рисунок 13 – Ошибка обновления данных таблицы

Решение: необходимо уменьшить файл до 100 или 50 мегабайт.

Также можно в конфигурации инсталляции dtm-query-execution-core изменить параметр по умолчанию с:

datasource:
edml:
changeOffsetTimeoutMs: ${EDML_CHANGE_OFFSET_TIMEOUT_MS:10000}

на:

changeOffsetTimeoutMs: ${EDML_CHANGE_OFFSET_TIMEOUT_MS:9000000}

  7.   При загрузке данных через CSV-uploader всплывает ошибка (Рисунок 14):

Ошибка обновления данных таблицы по запросу [The request timed out.]

Рисунок 14 Ошибка обновления данных таблицы. The request timed out.png

Рисунок 14 – Ошибка обновления данных таблицы. The request timed out

Решение: проверить размер файла, он должен весить не менее 10 мб.

  8.   При загрузке или удалении данных через CSV-uploader всплывает ошибка (Рисунки 15,16):

Ошибка обновления данных таблицы по запросу [java.lang.illegalStateException: Can’t rollback delta by datamart […] Error executing query [ROLLBACK DELTA]]

Рисунок 15 Ошибка обновления данных таблицы. Error executing query [ROLLBACK DELTA]].jpg

Рисунок 15 – Ошибка обновления данных таблицы. Error executing query [ROLLBACK DELTA]]

Решение: проверяем лог CSV-uploader, скорее всего отключен zookeeper.

или 

Ошибка удаления данных таблицы по запросу [java.lang.IllegalStateException: ru.datamart.prostore.jdbc.exception.DtmSq|Exception: Error executing query [ROLLBACK DELTA]

Рисунок 16 Ошибка удаления данных таблицы по запросу. Error executing query [ROLLBACK DELTA]].jpg

Рисунок 16 – Ошибка удаления данных таблицы по запросу. Error executing query [ROLLBACK DELTA]]

Решение: проверяем лог CSV-uploader и Prostore.

  9.   После загрузки структуры витрины из ЕИП НСУД в витрине Lite всплывает ошибка (Рисунок 17):

Ошибка генерации таблиц по XML [java.lang.IllegalStateException: ru.datamart.prostore.jdbc.exception.DtmSqlException: Error executing query [DROP TABLE GISPDataMart.datamart_product_catalog]]

Рисунок 17 Ошибка генерации таблиц по XML.jpg

Рисунок 17 – Ошибка генерации таблиц по XML

Решение: требуется уменьшить название базы таблицы, чтобы конструкция - databasename.tablename не превышала 56 символов.

  10.   При загрузке данных через CSV-uploader один из файлов выдает ошибку (Рисунок 18):

Поле 'type' не найдено в метаданных таблицы 'testdb.testtbl'

Рисунок 18 Ошибка обновления данных таблицы по запросу.jpg

Рисунок 18 – Ошибка обновления данных таблицы по запросу

Решение:

          1)     Если версия витрины ниже 1.6.0 – то убрать заголовки при загрузке данных в витрину;
          2)     Изменить кодировку на UTF-8 без BOM;
          3)     Если после первых 2ух пунктов ситуация не поменяется, то перезагрузить CSV-uploader и загрузить файл вручную.

  11.   При загрузке данных через CSV-uploader один из файлов выдает ошибки (Рисунки 19,20):

Некорректный файл, например:

Ошибка определения таблицы по заголовку: 

Рисунок 19 Ошибка определения таблицы по заголовку.jpg

Рисунок 19 – Ошибка определения таблицы по заголовку

или 

некорректное число столбцов в строке:

Рисунок 20 Некорректное число столбцов в строке.jpg

Рисунок 20 – Некорректное число столбцов в строке

Причин такой ошибки:

          1)     Разное количество полей.

Решение: необходимо проверить структуру таблиц и загружаемого файла. Т.е. должно быть одинаковое количество столбцов и строк в БД и в загружаемом файле.

          2)     Символ разделителя полей используется в тексте одного поля.

Решение: необходимо проверить символ разделителя полей в самом файле и в настройке CSV-uploader в параметре CSV_PARSER_SEPARATOR. Они должны совпадать. Соответственно, этот символ должен использоваться только для разделения и не использоваться в пунктуации.

  12.   Попытка залить схему в витрину через CSV-uploader завершилась ошибкой:

Ошибка генерации таблиц по XML [java.lang.IllegalStateException: java.sql.SQLException: java.sql.SQLException: Error executing query [create table testdb2.testtbl2 (Id VARCHAR, lastname VARCHAR, birthdate TIMESTAMP, SNILS VARCHAR]]

Решение:

          1)     Необходимо добавить первичные ключи в XML-схему данных;
          2)     Перед заливкой новой структуры необходимо удалить старую. 

Например, в приложении DBeaver, выполнив запрос:

DROP DATABASE testdb2;

  13.   При подключении к графической оболочке CSV-uploader в витрине версии Стандарт отображается ошибка отсутствия связи с сервером:

{"errorMessage":"Failed to resolve '…'[A(1)] and search domain query for configured domains failed as well: [dev.egov.local]"}

Рисунок 21 Ошибка Failed to resolve.jpg

Рисунок 21 – Ошибка "Failed to resolve"

Решение: необходимо на всех серверах (машинах) прописать хосты всех задействованных под Студию машин. 

Для этого откройте в текстовом редакторе файл hosts и впишите все хосты.

vi /etc/hosts

  14.   При загрузке структуры витрины через CSV-uploader в витрине версии Стандарт возникает ошибка: 

"Content is not allowed in prolog"

Рисунок 22 Ошибка Content is not allowed in prolog.jpg

Рисунок 22 – Ошибка "Content is not allowed in prolog"

Решение: необходимо перейти в оркестратор Datamart Studio применить настройки для инсталляции CSV-uploader. Или сделать рестарт контейнера на сервере с CSV-uploader.

  15.   При загрузке данных в CSV-uploader в витрине версии Стандарт возникает ошибка:

"Unauthorized"

Рисунок 23 Ошибка Unauthorized.jpg

Рисунок 23 – Ошибка "Unauthorized"

Решение: необходимо перейти в оркестратор Datamart Studio в настройки инсталляции REST-uploader:

          1)     В настройках инсталляции необходимо найти параметр AUTH_ENABLED (Аутентификация) и отключить её, предварительно разблокировав действие (или путём правки env контейнера REST-uploader).
          2)     После изменения настроек необходимо применить настройка инсталляции REST-uploader (или сделать рестарт контейнера на сервере с REST-uploader).

  Примечание

 Настройку аутентификации нужно менять именно в REST-uploader, поскольку именно он отвечает за загрузку данных

  16.   При загрузке данных в CSV-uploader в витрине версии Стандарт возникает ошибка:

"host name must not be empty"

Рисунок 24  Ошибка host name must not be empty.jpg

Рисунок 24 – Ошибка "host name must not be empty"

Решение: необходимо перепривязать интерфейсы и применить конфигурацию инсталляции CSV-uploader. Если витрина Стандарт развернута не в Datamart Studio, то необходимо произвести рестарт контейнера CSV-uploader.

Авторизуйтесь, чтобы оставить комментарий к статье