Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Всем привет, рабоаю за границей. С Datastage 8.0.1 BuildNr 1.2 не имею ничего общего, но коллеги дискутируют на одну тему: До этого времени получали файлы с латинским шрифтом и записывали данные с Datastage в базу данных. Поля в файлах имеют потоянную величину. Теперь будут пресылать в файлах русские буквы. Мой вопрос, можно ли прочитать с Datastage русские буквы или äöü, если поля имеют постоянную величину, илу нужно вводить разделительный знак? Спасибо заранее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:15 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hans Christian Andersen, можно прочитать любую кодировку (аккуратнее с unicode - размерчик в два раза увеличивается) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:29 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hans Christian Andersen, За уточнениями лучше обратиться к Hunterik'у - очень рекомендую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:31 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
knudsen, коллеги сделали следующее файл выглядет так (3 поля, в каждом три символа. asdйцуффф Поменяли лементы Datastage на utf-8. Поля имеют тип NVARCHAR (3 CHAR). Результат, русские буквы читаются, но часть. Вместо 3 символов, читается 2... В чем проблема ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:36 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
knudsen, Емаил, телефон? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:41 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hans Christian Andersen, можно уточнить предварительно в какой кодировке вы привыкли работать? - кодировка входного файла - NLS проекта DataStage - NLS базы конечной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:43 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, спасибо за участие. база: NLS_CHARACTERSET WE8ISO8859P15 . Будет меняться может на UTF8. Datastage: General NLS Settinig: MS1252-CS Project NLS Setting: ISO8859-1 P.S. Пока пробуем считать файл с Datastage и выгрузить данные в другой файл без участия БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 12:56 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Да уж... Ладно, давайте в общем, чтобы прочитать поле файла с данными, записанными в какой-то кодировке, нужно чтобы 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 с указанием правильной кодировки для чтения и записи файлов, всё должно быть хорошо. Наверное так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 13:22 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
А что, если у меня файл в Юникод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 13:29 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, вопрос поставлю глобально. Теперь файлы для чтения будут приходить в Юникод и нужно, весь проект поменять, что бы была возможность читать любые символы. Свойства файлов (разделение полей по постоянной величине) не должны меняться для решения проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 13:37 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
[quot Hunterik] - текстовые поля с русским отмечаете, как Unicode (эта опция задействует NLS-преобразования) /quot] как попасть на эту опцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 14:18 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Ну что ж, тогда и ответ глобально. =) Я работал в основном либо на проектах 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, партнёры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 14:51 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, спасибо за подробное описание. "поля с фиксированной длиной" - поняли правильно. Я работаю с SAP и с БД. Коллеги разбираются в Datastage, но в вопросе кодировке потерялись... Изменили Файл на UTF 8. Sequential File поменяли тоже в UTF 8. Поля декларирую как VARCHAR или Nvarchar. Если открываю Sequential File, обрезает колонки, где находятся русские буквы. Не могу понять почему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 15:18 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Давайте пример задания и файла с данными. Только посмотреть обещаю не сразу, может, вечером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 15:22 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Values in Sequential Stage File ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 16:47 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
При попытке показать днные( 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 16:49 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
и еще, кирлицу Sequential Stage File не может отобразить. Показывает вопросительные знаки. P.S. Есть ли у Вас skype? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 17:40 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Я бы не хотел Вас огорчать, не отвечая в 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 Передавайте файл с примером данных ТОЛЬКО в бинарном режиме, иначе рискуете его попортить. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 18:43 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
спасибо за консульцию.В понедельик буду пробывать. Вопрос: Зачем выставлять в администраторе DataStage MS1251-CS? Я же работаю и с ISO 8859-1 (ÜäÖ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 21:32 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Я хочу, чтобы Вы windows научили работать с русским, а после этого уже сказали, как взаимодествовать клиенту с сервером: IKC Пользуйтесь документацией - она хорошая, правда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 21:50 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, спасибо за документацию. Буду разбиратъся, хотя это задание коллег. Windows вроде корректно отображает кирилицу. Не отображал Sequential File Stage. Скажите, а если не зацикливаться на русском и расширить задачу. Скажем, известно, что текст может приходить со всей Европы(Болгария, Польша...). Как бытъ тогда? Заранее спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 22:58 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
utf8. Все основные европейские языки укладываются в два байта. Вся первая половина базовой плоскости - в три. Плюс - байтовый поток полностью совместимый со стандартным CRT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 23:10 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
HunterikВ администраторе DataStage тоже выставьте MS1251-CS (General->NLS->Client), перезапуск Desinger после этого обязателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2014, 12:30 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Про UTF8 - я в курсе. Техническая сторона интересует, т.к. не работаю с Datastage... Я правильно понимаю,нужно поменять в администраторе DataStage General->NLS->Client на UTF8? Кроме того, в Datastage File тоже должен быть установлен UTF8? Спасибо за ваши ответы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2014, 12:40 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Предположим вы решили перейти на обработку в utf8, для этого: 1. Вы переводите ПРОЕКТЫ DataStage на работу в UTF8 (выбираете проект->NLS->Server Maps+Parallel Maps) 2. Эта настройка автоматически унаследуется на нижних уровнях где оставлены значения по умолчанию (Project Default), там где нзначения менялись пользователем - всё сохранится. Прочитайте, что я писал раньше про переопределение на нижних уровнях... Например, если придёт файл в 1251 - вы сможете его прочитать заданием, работающим в utf8 в проекте с utf8, только надо будет элементу, читающему данный файл указать, что файл в соответствующей кодировке, чтобы чтение прошло корректно. Разберётесь с примером, что я вчера выложил - будет понятнее. 3. Client настраивается так, чтобы бы корректно происходило взаимодействие и отображение символов. У меня 1251 при utf-ных серверах, но я работаю только с русским и английским (без национальных спец.симолов вроде умляутов), у себя - "будете посмотреть", может и utf8 поставите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2014, 15:05 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, cпасибо вам большое. Завтра попробую ваше решение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2014, 19:27 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, попробовали загрузить твой файл в версии 8.0.1. получили ошибку: HCA.dsx does not appear to be a valid DataStage export file or is from an incompatible release. A valid DataStage export file is expected to be in Windows format (i.e. using CRLF line terminators). При попытке поменять настройки клиента (Administrator Client->General->NLS) на UTF8, получили ошибку: Map 'UTF8' is unsuitable for client/server use - Does not map the UniVerse mark character IM to a single byte Завтра будет возможность попробовать на версии 8.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2014, 12:47 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, Какая версия Dstage у Вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 14:03 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Очень плохо, что вы мечетесь и пробуете всё подряд. Менять один параметр за раз! У меня 8.7 и 9.1, вам делал на 9.1 - что под рукой было, на 8.7 импортируется. Предлагаю вам попробовать следующую последовательность действий: 1. Выставляете Client/Server в Administrator как он у вас был (WIN1252-CS?) - соответствие кодировке Windows. У вас Windows в какой кодировке - 1252? 2. Пробуете импортировать, далее, смотря, что получаете. Если будет крик о несоответствии версий, то можете попробовать открыть dsx и поправить Server version на 8.5. Вообще, официально, переход с даунгрейдом версий не поддерживается, но версий, соответствующих вашим у меня нет. От 8.0.1 отказались - эта версия снимается с поддержки вот-вот, а 8.5 - это промежуточная версия между очень хорошим 8.7 и стареющими 8.0-8.1: Withdrawal from support Program number VRM date Program release name 5724-Q36 8.1.2 04/30/15 IBM InfoSphere Information Server 5724-Q36 8.0.1 09/30/14 IBM InfoSphere Information Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 15:01 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
И вообще, давно есть 9.1.2, а неделю назад IBM запилила 11.3! =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 15:04 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
HunterikПредположим вы решили перейти на обработку в utf8, для этого: 1. Вы переводите ПРОЕКТЫ DataStage на работу в UTF8 (выбираете проект->NLS->Server Maps+Parallel Maps) 2. Эта настройка автоматически унаследуется на нижних уровнях где оставлены значения по умолчанию (Project Default), там где нзначения менялись пользователем - всё сохранится. Прочитайте, что я писал раньше про переопределение на нижних уровнях... Например, если придёт файл в 1251 - вы сможете его прочитать заданием, работающим в utf8 в проекте с utf8, только надо будет элементу, читающему данный файл указать, что файл в соответствующей кодировке, чтобы чтение прошло корректно. Разберётесь с примером, что я вчера выложил - будет понятнее. 3. Client настраивается так, чтобы бы корректно происходило взаимодействие и отображение символов. У меня 1251 при utf-ных серверах, но я работаю только с русским и английским (без национальных спец.симолов вроде умляутов), у себя - "будете посмотреть", может и utf8 поставите. Попытался сделать, все как вы сказали 1. Загрузить Ваш файл 2. Клиента перевести на UTF8 Кодировка Client/Server в Administrator WIN1252-CS. Windows должен быть 1252. Dstage у коллеги проинсталирован. Будем пробовать Ваш файл в 8.5 загрузить. Я их тоже спросил, почему старую версию используют. Говорят, что через пару месяцев будут переходить на 9.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 17:52 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Если приложение не юникодное, то принимать windows-1251 при системной windows-1252 оно не обязано. "Язык неюникодных приложений" можно выбирать независимо для системы (пусть остаётся 1252) и для пользователя (отдельная учётка с 1251). Как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 18:20 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hunterik, Ваш пример работает на 8.5. Но это немного другое решение проблемы. Вы чиаете всю строку в Stage File, а затем разбиваете ее на 3 поля. Можно ли, без прмежуточных шагом, читать файл в Stage File, состоящий из 3 полей??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 18:43 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Technote (FAQ) Using IBM InfoSphere DataStage to read in UTF8 data as fixed length Question Can the DataStage sequential file stage be used to read in UTF8 data as fixed length? Answer UTF-8 is not a fixed size character set, characters may be 1, 2 or 3 bytes long. The server sequential file stage is not capable of handling this format as the columns are fixed width at the byte level. So a given column must be n bytes wide. Clearly this will only work with fixed width character sets. Neither a server nor a parallel job sequential file stage can cope with a fixed-width file where the row length is not also a fixed number of bytes. Both of them take "fixed width" to mean that each column is a fixed number of bytes, not characters. Which means that they cannot work with an NLS map where the character length is not the same as the byte length (such as UTF8). This applies when the data has 2-byte UTF8 chars combined with single byte characters. The only way of processing such a file is to change the job to read it as a single variable-length column per row (assuming there is a row delimiter such as newline), using a UTF8 map. Then have a Transformer stage that uses substringing to substring the row into each column. There is also a column import stage that would allow the data to be split into columns after reading it in as UTF8, but this would only be available in a parallel job. Source: http://www-01.ibm.com/support/docview.wss?uid=swg21455000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 19:54 |
|
||
|
Datastage
|
|||
|---|---|---|---|
|
#18+
Hans Christian Andersen, ну собственно да. Я попробовал читать только с использованием SeqFile - для fixed length полей не пошло, а так как время дорого - сделал, как делаю обычно - прочитал файл строками, а разбираю уже позже в Import Column Stage. =) Кстати, именно такой способ чтения является довольно хорошим по производительности при работе с большими файлами, за счёт распределения процесса чтения и парсинга. Трансформер, кстати, несмотря на то, что его в техноте ставят, как альтернативу, будет работать медленнее, чем Import Column за счёт того, что вы будете делать множество обращений вида column[m,n] - для трёх полей не так критично, для большого количества полей, трансформер существенно проиграет. =) Тема закрыта? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2014, 22:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=43&tid=1601038]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 297ms |
| total: | 562ms |

| 0 / 0 |
