Создание таблицы MsSql из файла Cobol fd

У меня есть следующие файлы COBOL: .DAT, .IDX и файл fd (определение файла). Мы используем COBOL Net Express от MicroFocus.

  1. Теперь сначала я хотел бы создать таблицу MsSql из этого определения файла Cobol. В определении файла есть это:

    FD PREGLA DATA RECORD IS FPG-REC.
    01 FPG-REC.
    02 FPG-STA PIC X(01).
    02 FPG-KEY.
    03 FPG-FRM PIC X(02) .
    03 FPG-НЕЧЕТНЫЙ PIC X(02).
    03 FPG-DOK PIC 9(08) ДВОИЧНЫЙ.
    02 FPG-POZ PIC 9(06) ДВОИЧНЫЙ.
    02 FPG-PRM.
    03 FPG-IND PIC 9(01) ПРОИСХОДИТ 10 РАЗ.
    .........и т. д.

Можно ли импортировать этот файл в Microsoft SQL Server 2008? Мы также используем студию управления сервером Sql. Теперь я попробовал мастер импорта и экспорта SQL-сервера, но у него нет импорта для такого типа файлов.

Я также смотрел в NET Express, но безуспешно. Возможно ли получить определение таблицы SQL из COBOL fd?


person Jernej Jerin    schedule 04.08.2011    source источник


Ответы (1)


Создание определений таблиц SQL из макетов записей COBOL не всегда является прямым процессом (хотя пойти другим путем довольно просто).

Проблема в том, что макеты записей COBOL могут быть довольно сложными с различными наложениями (COBOL REDEFINES) и денормализациями (COBOL OCCURS). Они в значительной степени сводят на нет большинство попыток автоматизировать процесс сопоставления сложной записи COBOL с макетом таблицы SQL.

Сопоставление типов данных также может быть проблемой. Файлы Net Express могут быть созданы для среды на основе ASCII или EBCDIC (IBM Mainframe). Если ваши файлы закодированы в EBCDIC, вам, скорее всего, придется написать специальное программное обеспечение для преобразования, потому что ваш файл содержит смешанные символьные/числовые данные (могут быть сторонние продукты, которые могут автоматизировать или частично автоматизировать этот тип преобразования, но я не знаком с ними).

Попробуйте просмотреть один из файлов .DAT с помощью простого текстового редактора (например, блокнота). Если вы можете прочитать символьные данные, то они основаны на ASCII, и у вас есть шанс загрузить данные без особых дополнительных усилий по преобразованию.

Определения полей COBOL, которые являются PIC X чем-то, содержат символьные данные и преобразуются непосредственно в CHAR данные SQL аналогичной длины (т. е. PIC X(4) становится CHAR(4)).

Определения полей COBOL, определенные как BINARY, переводятся в SQL INTEGER. Является ли целое число длинным или коротким, зависит от количества цифр. Например, PIC S9(8) BINARY задает двоичное целое число со знаком из 8 цифр, которое займет 4 байта. С другой стороны, PIC S9(4) BINARY состоит всего из 4 цифр, поэтому занимает 2 байта (короткое целое число).

Другое распространенное определение поля COBOL — PACKED-DECIMAL или COMP-3. Эти поля могут преобразовываться в типы данных SQL DECIMAL.

SimoTime предоставляет очень хороший обзор нескольких определений полей COBOL. Выполнение преобразования в соответствующий тип данных SQL не должно быть трудным.

Примечание 1. Из фрагмента макета записи COBOL, предоставленного в вашем вопросе, я вижу пункт OCCURS. Из-за этого результирующая таблица даже не будет в первой нормальной форме. Эти таблицы могут быть настоящей проблемой для управления в среде базы данных.

Примечание 2. Данные, которые можно использовать, находятся в .DAT файлах. Макет записи будет соответствовать определению записи COBOL. Файлы .IDX содержат данные индексации, используемые MicroFocus при чтении/записи. Вы можете игнорировать их.

person NealB    schedule 04.08.2011
comment
Спасибо за ваш ответ. Я сделал ошибку в оп, где я спросил, можно ли получить определение таблицы SQL из COBOL fd, тогда я уже знал это. Более серьезная проблема, о которой я не упомянул, заключается в том, что у нас есть примерно 100 таких файлов для преобразования в MsSql rdb. Я обнаружил, что все инструменты, которые существуют для такого рода автоматического преобразования, предназначены только для продажи, бесплатного программного обеспечения не существует. Но еще раз спасибо за предоставление ссылки для обзора нескольких определений полей COBOL, если нам придется сделать это вручную, это будет хорошим справочником. - person Jernej Jerin; 04.08.2011
comment
продолжение: Также вы сказали, что если он не в первой нормальной форме, им может быть трудно управлять. Требуют ли эти коммерческие инструменты для автоматического преобразования из COBOL в MsSql rdb, чтобы он был в нормальной форме 1,2,3 или 4? - person Jernej Jerin; 04.08.2011
comment
@Jernej Ненормализованные таблицы могут создаваться, запрашиваться и обновляться большинством СУБД. Нормализация не является фактическим требованием для СУБД. Плохо нормализованная база данных приведет к долгосрочным проблемам для вашего приложения. Взгляните на некоторые ответы на этот вопрос SO чтобы понять, почему нормализация — это хорошая идея. Преобразование данных, управляемых через файловую систему, в РСУБД — это то, что обычно требует большого анализа и не может быть легко автоматизировано с помощью готовых инструментов преобразования. - person NealB; 05.08.2011