Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38687916&tid=1601038]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 306ms |
| total: | 483ms |

| 0 / 0 |
