Создание плоского файла с помощью SSIS для чтения программой IBM z/OS

Я создаю текстовый файл фиксированной ширины, используя SSIS. Формат подключения плоского файла Ragged Right. Файл создается правильно и проходит все локальные модульные тесты на моем компьютере с Windows. Затем пакет служб SSIS передает файл партнеру по протоколу SFTP. Программист мэйнфреймов нашего партнера утверждает, что может прочитать только одну запись. Я проверил, что использовал для разрывов строк, и выбрал {CR}{LF}.

Я провел небольшое исследование и нашел пару статей, в которых говорилось, что системы, отличные от Windows, не смогут распознавать CRLF в качестве разделителя строк, но {LF} будет допустимым. Я попробовал это, и программист все еще говорит, что обнаруживает только одну запись, даже если в файле более 100 записей.

Есть ли какая-либо дополнительная конфигурация SSIS, отсутствующая в моем подключении к неструктурированному файлу? Может дело в кодировке?


person Ta01    schedule 01.03.2011    source источник
comment
Есть ли у вас согласованный макет плоского файла? Это должно включать то, что вы должны использовать в качестве разделителя строк, и должно ли оно быть частью фиксированной ширины. Вы можете открыть файл в шестнадцатеричном редакторе, посмотреть и сравнить его с вашим макетом, и пусть ваш партнер сделает то же самое и сравнит с тем, что он ожидает увидеть. Похоже, кому-то будет трудно решить, не зная точно, в чем проблема.   -  person DKnight    schedule 01.03.2011
comment
Хороший бесплатный шестнадцатеричный редактор можно найти здесь — belkaplan.de/opera/tools/xvi32. .htm, если он вам нужен.   -  person DKnight    schedule 01.03.2011
comment
Я попробовал это, в моем файле есть 0d0a, который является переводом строки с возвратом каретки, в одном из его файлов, который, как он утверждает, работает, просто есть 20, что, я думаю, просто шестнадцатеричное для пробела. Теперь он думает, что я должен отправить файл в формате ebcdic... Я отправляю в формате ascii..   -  person Ta01    schedule 01.03.2011
comment
Hex 20 — это пространство Ascii, в Ebcdic — это DS или Digit Select. Шестнадцатеричный редактор, который я связал, сделает преобразование Ebcdic, хотя это может быть не идеально, если у вас есть какие-либо специальные символы.   -  person DKnight    schedule 02.03.2011


Ответы (1)


В подобных случаях я считаю полезным запросить небольшой образец файла, чтобы вы могли сопоставить свой вывод с ним, используя шестнадцатеричный редактор для проверки всех специальных символов. Если образец файла невозможен, сократите свои результаты до 2 или 3 и поработайте с вашим коллегой, чтобы получить правильный формат, даже если это означает, что вы вручную изменяете файл с помощью шестнадцатеричного редактора, пока вы не получите его правильно, тогда вы можете решить Программное создание файла.

Ваш пробег может варьироваться, но прямо сейчас кажется, что вы программируете без полной спецификации, и это сделает вашу работу огромной головной болью, если не полностью невозможной.

Удачи!

person DKnight    schedule 01.03.2011
comment
Таким образом, окончательное решение было таким: я использовал winScp, потому что SSIS изначально не поддерживает sFTP, поэтому я вызывал winScp в своем пакете для передачи файла. Из прихоти я решил изменить режим передачи на двоичный, и это сработало. Поскольку это был текстовый файл, я подумал, что режим ASCII правильный, но, думаю, теперь он работает, так что все довольны. Я не утверждаю, что понимаю внутренности того, почему эта фиксированная кросс-платформенная проблема с разграничением строк. Для тех, кто заинтересован, разделителем строк для подключения к плоскому файлу был {CR}{LF}. Может быть, кто-то когда-нибудь столкнется с этим... - person Ta01; 03.03.2011