powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Datastage
25 сообщений из 41, страница 1 из 2
Datastage
    #38687794
Всем привет,

рабоаю за границей. С Datastage 8.0.1 BuildNr 1.2 не имею ничего общего, но коллеги дискутируют на одну тему:
До этого времени получали файлы с латинским шрифтом и записывали данные с Datastage в базу данных. Поля в файлах имеют потоянную величину. Теперь будут пресылать в файлах русские буквы. Мой вопрос, можно ли прочитать с Datastage русские буквы или äöü, если поля имеют постоянную величину, илу нужно вводить разделительный знак?

Спасибо заранее...
...
Рейтинг: 0 / 0
Datastage
    #38687816
knudsen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hans Christian Andersen,

можно прочитать любую кодировку (аккуратнее с unicode - размерчик в два раза увеличивается)
...
Рейтинг: 0 / 0
Datastage
    #38687820
knudsen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hans Christian Andersen,

За уточнениями лучше обратиться к Hunterik'у - очень рекомендую.
...
Рейтинг: 0 / 0
Datastage
    #38687831
knudsen,

коллеги сделали следующее

файл выглядет так (3 поля, в каждом три символа.
asdйцуффф

Поменяли лементы Datastage на utf-8.
Поля имеют тип NVARCHAR (3 CHAR).

Результат, русские буквы читаются, но часть. Вместо 3 символов, читается 2...

В чем проблема ?
...
Рейтинг: 0 / 0
Datastage
    #38687841
knudsen,

Емаил, телефон?
...
Рейтинг: 0 / 0
Datastage
    #38687842
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen,
можно уточнить предварительно в какой кодировке вы привыкли работать?
- кодировка входного файла
- NLS проекта DataStage
- NLS базы конечной
...
Рейтинг: 0 / 0
Datastage
    #38687864
Hunterik,

спасибо за участие.
база:
NLS_CHARACTERSET WE8ISO8859P15 . Будет меняться может на UTF8.


Datastage:
General NLS Settinig:
MS1252-CS

Project NLS Setting:
ISO8859-1

P.S. Пока пробуем считать файл с Datastage и выгрузить данные в другой файл без участия БД.
...
Рейтинг: 0 / 0
Datastage
    #38687881
Hunterik,

File ANSI
...
Рейтинг: 0 / 0
Datastage
    #38687904
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж...

Ладно, давайте в общем, чтобы прочитать поле файла с данными, записанными в какой-то кодировке, нужно чтобы Sequential File работал в этой кодировке с данным полем (настройка может наследоваться от проекта, переписываться настройками задания, переписываться настройками элемента, переписыватья настройками отдельного поля).

Предположим, у вас файл в 1251.
Всё остальное по настройкам к работе с русским не очень располагает, потому можно так:

- в настройках Sequential File для NLS ставите windows-1251 для данного примера.
- текстовые поля с русским отмечаете, как Unicode (эта опция задействует NLS-преобразования)
при этом если у вас размерность поля три СИМВОЛА, то varchar(3) Unicode корректно их прочтёт и дальше - это будет просто набор байт внутри задания DataStage, причём русский символ будет хранится двумя байтами.

Если вы внутри задания где-то, скажем в трансформере, снимете опцию Unicode для данного поля, оставив varchar(3), то получите неявное преобразование varchar(3) Unicode для 'ЯЯЯ' (6 байт) в varchar(3) (3 байта), которое приведёт к порче данных, будет Я (2 байта) + 1 байт нечитаемого символа, остальное вы убъёте, соответствующее предупреждение будет в журнале задания.

Возможно, что-то подобное вы и сделали. Если же вы протащите от одного файла до другого сквозь всё задание varchar(3) Unicode с указанием правильной кодировки для чтения и записи файлов, всё должно быть хорошо.
Наверное так.
...
Рейтинг: 0 / 0
Datastage
    #38687916
А что, если у меня файл в Юникод?
...
Рейтинг: 0 / 0
Datastage
    #38687931
Hunterik,

вопрос поставлю глобально. Теперь файлы для чтения будут приходить в Юникод и нужно, весь проект поменять, что бы была возможность читать любые символы. Свойства файлов (разделение полей по постоянной величине) не должны меняться для решения проблемы.
...
Рейтинг: 0 / 0
Datastage
    #38687987
[quot Hunterik]
- текстовые поля с русским отмечаете, как Unicode (эта опция задействует NLS-преобразования)
/quot]

как попасть на эту опцию?
...
Рейтинг: 0 / 0
Datastage
    #38688028
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж, тогда и ответ глобально. =)

Я работал в основном либо на проектах UTF-8, либо на проектах windows-1251 с русским языком.
У вас проект в ISO8859-1 - это латинский алфавит. Без проверки я не могу сказать, с какими проблемами вы столкнётесь.

Полагаю также, что как только вы начнёте писать в базу данные, они будут ломаться по той причине, что клиенты СУБД работают у вас сейчас, скорее всего, в кодировке ОС.
Я предполагаю, что у вас UNIX/Linux раз кодировка ISO8859-1 для проекта.

Разделение полей по постоянной величине - это видимо поля с фиксированной длиной... Трудности перевода. =)

Работа с различными кодировками в DataStage подчиняется следующим правилам:
1. В Администраторе можете посмотреть какая NLS настроена для проекта, у вас ISO8859-1, значит для работы с русским вы будете вынуждены при разработке менять настройки на уровнях ниже.
2. Настройка на уровне проекта влияет на настройку NLS всех заданий, но её можно поменять на уровне задания, однако...
3. Вы можете указать NLS и на уровне элемента Sequential Stage (Stage -> NLS Map) и эта настройка перепишет настройки задания.
4. Если и так не хочется, то можете читать определённые колонки в нужной кодировке (Stage -> NLS Map -> Allow per-column mapping), а далее задаётся NLS Map на уровне колонок.

Указание правильной кодировки даст возможность заданию DataStage читать данные корректно.
Для текстовых полей должна выставляться также опция Unicode (Extended атрибут) в случае необходимости использования конвертации с использованием NLS Map-ов элемента (читаем файл в кодировке, отличной от кодировки задания).

Мне кажется логичным в вашем случае сделать перевод проекта DataStage на UTF-8 - вы сможете читать свой файлик без заморочек, либо 1251 - тогда с конвертацией в Sequential File элементе (Stage -> NLS Map -> UTF-8 + Unicode на полях), в последующих элементах Unicode с колонок можно будет снять (зависит!см.ниже). General NLS Settiing сделаете MS1251-CS в Administrator client.

При этом, если вы решитесь на UTF-8, то вы должны будет понимать, что латинские символы будут передаваться по линкам, как один байт, а русские, как два.
В кодировке 1251 - один байт и те, и другие символы. Японский не надо будет грузить в будущем? =)

Строковые функции в DataStage над текстовыми полями без опции Unicode работают в байтовом режие, попробуете сделать F[1,1] от буквы 'Я' - в проекте UTF-8 испортите данные, в проекте 1251 всё будет хорошо.
Если для поля задана опция Unicode, то работа идёт в посимвольном режиме в обоих случаях и данные испортить нельзя - получите 'Я'.

И в том и в другом случае, вам придётся при работе с СУБД познакомится ещё с рядом переменных, которые к DataStage отношения не имеют.
Вам надо будет указывать, что приложение (задание DataStage) работает с данными в кодировке UTF-8 или 1251: IANAAppCodePage (ODBC), DB2CODEPAGE (DB2), NLS_LANG (Oracle), ...
Иначе клиент СУБД будет просить данные в одной кодировке (ISO8859-1), DataStage будет их ожидать в другой - получите интересный результат.
Также можно перевести сервер на другую лоакль, либо можно будет поиграться с dsenv на предмет выставления работы процессов движка в нужной локали (локаль UTF-8.EN_US должна быть установлена).

Я бы вам посоветовал не менять резко боевой проект и продуктивный сервер, а потренироваться где-нибудь рядом.
Если вы во всём этом плохо ориентируетесь, то лучше обратиться в сервис (IBM, партнёры).
...
Рейтинг: 0 / 0
Datastage
    #38688065
Hunterik,

спасибо за подробное описание. "поля с фиксированной длиной" - поняли правильно. Я работаю с SAP и с БД.
Коллеги разбираются в Datastage, но в вопросе кодировке потерялись...
Изменили Файл на UTF 8. Sequential File поменяли тоже в UTF 8. Поля декларирую как VARCHAR или Nvarchar.
Если открываю Sequential File, обрезает колонки, где находятся русские буквы.
Не могу понять почему
...
Рейтинг: 0 / 0
Datastage
    #38688072
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте пример задания и файла с данными.
Только посмотреть обещаю не сразу, может, вечером.
...
Рейтинг: 0 / 0
Datastage
    #38688174
Hunterik,

Файл
...
Рейтинг: 0 / 0
Datastage
    #38688178
UTF-Format in Stage:
...
Рейтинг: 0 / 0
Datastage
    #38688180
Column
...
Рейтинг: 0 / 0
Datastage
    #38688183
Values in Sequential Stage File
...
Рейтинг: 0 / 0
Datastage
    #38688192
При попытке показать днные( aaaäöüäö1 ) получаю ошибку:
CopyOfxfm_utf8..Input.to_T: nls_read_external() - NLS input mapping error, row 1, column s2 data 'ä?' external C3A4C3
CopyOfxfm_utf8..Input.to_T: nls_read_external() - NLS input mapping error, row 1, column s3 data '?ü' external B6C3BC
...
Рейтинг: 0 / 0
Datastage
    #38688291
и еще, кирлицу Sequential Stage File не может отобразить.
Показывает вопросительные знаки.

P.S. Есть ли у Вас skype?
...
Рейтинг: 0 / 0
Datastage
    #38688340
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы не хотел Вас огорчать, не отвечая в Skype или любом другом средстве общения по Вашему желанию. У всех есть работа...

В архиве простой пример, корректно работает - пробуйте.

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

В администраторе DataStage тоже выставьте MS1251-CS (General->NLS->Client), перезапуск Desinger после этого обязателен.

Я максимально приблизился к вашим настройкам (ставил ISO8859-1 для проекта).
На всякий случай содержимое файла в hex после передачи на Linux (UTF-8 with BOM!):
[root@IIS912FULL tmp]# od -x HCA_UTF8_FL.txt
0000000 bbef d1bf d187 d082 77be 6f68 bad0 b0d0
0000020 bad0 000a
0000023

Передавайте файл с примером данных ТОЛЬКО в бинарном режиме, иначе рискуете его попортить.
Удачи.
...
Рейтинг: 0 / 0
Datastage
    #38688461
спасибо за консульцию.В понедельик буду пробывать.
Вопрос:
Зачем выставлять в администраторе DataStage MS1251-CS? Я же работаю и с ISO 8859-1 (ÜäÖ).
...
Рейтинг: 0 / 0
Datastage
    #38688467
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу, чтобы Вы windows научили работать с русским, а после этого уже сказали, как взаимодествовать клиенту с сервером: IKC
Пользуйтесь документацией - она хорошая, правда.
...
Рейтинг: 0 / 0
Datastage
    #38688489
Hunterik,

спасибо за документацию. Буду разбиратъся, хотя это задание коллег.
Windows вроде корректно отображает кирилицу. Не отображал Sequential File Stage.
Скажите, а если не зацикливаться на русском и расширить задачу. Скажем, известно, что текст может приходить со всей Европы(Болгария, Польша...). Как бытъ тогда?

Заранее спасибо...
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Datastage
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]