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

Рисунок 2 – Web-интерфейс CSV-uploader
Чтобы проверить запущен ли CSV-uploader, необходимо:
1. В Витрине данных конфигурации Lite:
Необходимо перейти в инструмент управления контейнерами Portainer. Для этого в адресной строке браузера необходимо указать адрес сервера, на котором производилась установка витрины конфигурации Lite, порт по умолчанию 900.
Также через Portainer можно остановить/перезапустить контейнер, используя кнопки переключения на панели быстрых действий (Рисунок 3):

Рисунок 3 – Web-интерфейс Portainer. Управление работы контейнеров
2. В Витрине данных конфигурации Стандарт:
- Если Витрина данных была развёрнута без оркестратора, то необходимо:
2) На сервере необходимо выполнить команду: docker ps.
После чего можно убедиться, что контейнер приложения установлен и запущен (Рисунок 4):

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

Рисунок 5 – Web-интерфейс Datamart Studio. Инсталляция csv_uploade
Загрузка структуры витрины в CSV-uploader
Структура Витрины данных (ВД) создаётся в ЕИП НСУД. Там же, после создания, её можно выгрузить в формате .xml, для этого:
1) Необходимо перейти в карточку витрины.
2) На правой панели нажать на Сформировать XML версии ВД (Рисунок 6):
Рисунок 6 – ЕИП НСУД. Просмотр карточки Витрины данных (ВД)
3) После нажатия сформируется .xml, который необходимо скачать. Для этого необходимо нажать на XML версии ВД (Рисунок 7):
Рисунок 7 – ЕИП НСУД. Загрузка XML версии ВД
4) Для того, чтобы загрузить структуру витрины, откройте Web-интерфейс CSV-uploader и перейдите во вкладку Загрузка структуры (Рисунок 8).
5) Выберите для загрузки ранее сохранённый .xml файл:
Рисунок 8 – Загрузка структуры витрины
Загрузка данных через CSV-uploader:
1. Для загрузки данных через CSV-uploader рекомендуется предварительно выгрузить файл-шаблон (Рисунок 9):

Рисунок 9 – Вкладка «Выгрузить шаблон»
2. После выгрузки шаблон необходимо заполнить данными.
3. Далее перейти во вкладку Загрузить, выбрать заполненный csv-шаблон и нажать «Загрузить» (Рисунок 10):
Рисунок 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 – Ошибка при использовании зарезервированного слова в структуре витрины
Примечание
С основным перечнем зарезервированных слов можно ознакомиться в просторе
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 – Ошибка обновления данных таблицы
Необходимо проверить логи контейнера 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 – Ошибка обновления данных таблицы
Решение: необходимо уменьшить файл до 100 или 50 мегабайт.
Также можно в конфигурации инсталляции dtm-query-execution-core изменить параметр по умолчанию с:
|
datasource: |
на:
|
changeOffsetTimeoutMs: ${EDML_CHANGE_OFFSET_TIMEOUT_MS:9000000} |
7. При загрузке данных через CSV-uploader всплывает ошибка (Рисунок 14):
Ошибка обновления данных таблицы по запросу [The request timed out.]
Рисунок 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]].jpg](/upload/medialibrary/f6c/ign90lllqsg5n1mvd794ufgx3j774f87/Risunok-15-_-Oshibka-obnovleniya-dannykh-tablitsy.-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]].jpg](/upload/medialibrary/74c/6hk4764twnyiee83xv5gla3old145q1a/Risunok-16-_-Oshibka-udaleniya-dannykh-tablitsy-po-zaprosu.-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
Решение: требуется уменьшить название базы таблицы, чтобы конструкция - databasename.tablename не превышала 56 символов.
10. При загрузке данных через CSV-uploader один из файлов выдает ошибку (Рисунок 18):
Поле 'type' не найдено в метаданных таблицы 'testdb.testtbl'
Рисунок 18 – Ошибка обновления данных таблицы по запросу
Решение:
1) Если версия витрины ниже 1.6.0 – то убрать заголовки при загрузке данных в витрину;
2) Изменить кодировку на UTF-8 без BOM;
3) Если после первых 2ух пунктов ситуация не поменяется, то перезагрузить CSV-uploader и загрузить файл вручную.
11. При загрузке данных через CSV-uploader один из файлов выдает ошибки (Рисунки 19,20):
Некорректный файл, например:
Ошибка определения таблицы по заголовку:
Рисунок 19 – Ошибка определения таблицы по заголовку
или
некорректное число столбцов в строке:
Рисунок 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"
Решение: необходимо на всех серверах (машинах) прописать хосты всех задействованных под Студию машин.
Для этого откройте в текстовом редакторе файл hosts и впишите все хосты.
|
vi /etc/hosts |
14. При загрузке структуры витрины через CSV-uploader в витрине версии Стандарт возникает ошибка:
"Content is not allowed in prolog"
Рисунок 22 – Ошибка "Content is not allowed in prolog"
Решение: необходимо перейти в оркестратор Datamart Studio применить настройки для инсталляции CSV-uploader. Или сделать рестарт контейнера на сервере с CSV-uploader.
15. При загрузке данных в CSV-uploader в витрине версии Стандарт возникает ошибка:
"Unauthorized"
Рисунок 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"
Решение: необходимо перепривязать интерфейсы и применить конфигурацию инсталляции CSV-uploader. Если витрина Стандарт развернута не в Datamart Studio, то необходимо произвести рестарт контейнера CSV-uploader.