Я запускаю приложение Java, которое передает файлы, которые мне нужно импортировать, на сервер, на котором работает DB2. Затем приложение Java создает JDBC-соединение с базой данных и запускает:
CALL SYSPROC.ADMIN_CMD('import from <filename> of del modified by decpt, coldel; messages on server inert into <view>')
Проблема, с которой я столкнулся, как-то связана с кодировкой базы данных пользователя, которого база данных использует для импорта файлов (используя хранимую процедуру admin_cmd). Эта проблема:
«Umlaute», как и ä, ö, ü, испортил этот импорт. У меня была такая проблема в прошлом, и решение всегда заключалось в том, чтобы установить LC_CTYPE пользователя, импортирующего данные, в de_DE.iso88591
Что я уже исключил в качестве источника проблемы:
- Передача файлов на сервер базы данных. (Умлаут все еще в порядке после этого)
- Соединение JDBC (я просто вставил строку через команду sql вместо чтения из файла)
Дело в том, что я не знаю, какой пользователь DB2 использует для импорта файлов через ADMIN_CMD. И я также не верю, что это может быть как-то связано с настройками DB2, поскольку при любом другом способе вставки, загрузки ... данных в него все работает нормально.
И да, мне нужно использовать ADMIN_CMD. Инструмент командной строки DB2 - это кошмар производительности ..