Файловый обмен: различия между версиями
Admin (обсуждение | вклад) (Initial version) |
Admin (обсуждение | вклад) (finish2) |
||
(не показано 14 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | ===Описание структуры и команд входящего файла=== | |
+ | |||
+ | #Все входящие файлы архивируется в формате ZIP; | ||
+ | #Файлы должны иметь расширение ZIP; | ||
+ | #Имена файлов могут быть любыми на усмотрение страховой компании, но они не должны повторяться; | ||
+ | #Внутри входящего архивного файла могут быть несколько входящих командных файлов; | ||
+ | #Все даты передаются в ЕСБД в формате ДД.ММ.ГГГГ, разделитель целой и дробной части – «.»(точка), разделитель разрядов – отсутствует. Логические поля имеют варианты значения True, False | ||
+ | #Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД. | ||
+ | #Команды входящих командных файлов | ||
+ | |||
+ | {| border="1" | ||
+ | !Имя команды | ||
+ | !Назначение | ||
+ | |- | ||
+ | |:GETTABLEDATA= | ||
+ | |запрос данных | ||
+ | |- | ||
+ | |:TABLE= | ||
+ | |передача данных для вставки/изменения/удаления записи из таблицы | ||
+ | |- | ||
+ | |:CHILDTABLE= | ||
+ | |передача данных для вставки/изменения/удаления записи дочерней таблицы. Используется только в паре с :TABLE и |обеспечивает единую транзакцию. Записи будут сохранены, только в случае если была сохранена запись из команды :TABLE | ||
+ | |- | ||
+ | |:DYNAMICCHILDTABLE= | ||
+ | |Аналогична команде :CHILDTABLE, только связь с :TABLE – динамическая | ||
+ | |} | ||
+ | |||
+ | |||
+ | ===Описание структуры и команд файла-ответа=== | ||
+ | |||
+ | #На каждый непустой входящий файл, система формирует файл ответа, причем:<br>Имя файла – имеет формат <Имя_входящего_файла>.ANS.ZIP;<br>Файл заархивирован в формате ZIP;<br>Внутри архивного файла-ответа содержатся файлы ответов на командные файлы содержавшиеся во входящем файле;<br>Имена файлов ответов имеют формат <Имя_командного_файла>.ANS | ||
+ | #Команды файлов ответов: | ||
+ | |||
+ | {| border="1" | ||
+ | !Имя команды | ||
+ | !Назначение | ||
+ | |- | ||
+ | |:CRCERROR | ||
+ | |Ошибка контрольной суммы | ||
+ | |- | ||
+ | |:ERROR= | ||
+ | |Ошибка с описанием и указанием номера строки | ||
+ | |- | ||
+ | |:TABLE= | ||
+ | |Записи таблицы, сформированные по запросу :GETTABLEDATA | ||
+ | |- | ||
+ | |:CHANGEID | ||
+ | |Список выданных ключей | ||
+ | |} | ||
+ | |||
+ | Принцип формирования файла | ||
+ | #Каждая команда начинается с новой строки без пробелов; | ||
+ | #Все команды, кроме табличных команд, пишутся в одну строку; | ||
+ | #Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД. | ||
+ | #Табличные данные передаются в виде: | ||
+ | * В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду. | ||
+ | * Пример: | ||
+ | <pre> | ||
+ | :<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции> | ||
+ | ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | ===Описание команд=== | ||
+ | |||
+ | |||
+ | Команда :'''GETTABLEDATA''' | ||
+ | |||
+ | Назначение: Запрос данных из ЕСБД | ||
+ | |||
+ | Синтаксис: | ||
+ | :GETTABLEDATA=<Имя_Таблицы>;CONDITION=<Условия>;COLUMNS=<Колонки>; | ||
+ | |||
+ | Команда пишется в одной строке. Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду. | ||
+ | |||
+ | {| border="1" | ||
+ | !Имя таблицы | ||
+ | !Имя таблицы, из которой осуществляется выборка | ||
+ | |- | ||
+ | |Условия | ||
+ | |SQL условия, ограничивающие записи (алиас таблицы выборки, для подзапросов - tab99). <br>При работе с полями типа «Дата» используется преобразование TO_DATE(’01.01.2007’,’dd.mm.yyyy’) | ||
+ | |- | ||
+ | |Колонки | ||
+ | |колонки из таблицы, так же могут использоваться функции (алиас колонки при этом - обязателен)<br> | ||
+ | Доступные функции: | ||
+ | <br>GetDriverClass(aClientID NUMBER, aOnDate DATE) RETURN NUMBER – возвращает идентификатор класса «бонус-малус», где: | ||
+ | <br>aClientID – идентификатор клиента ЕСБД; | ||
+ | <br>aOnDate - дата на которую необходимо получить класс; | ||
+ | <br>GetDriverClassText( aClientID NUMBER, aOnDate DATE) RETURN VARCHAR2 – возвращает название класса «бонус-малус», где: | ||
+ | <br>aClientID – идентификатор клиента ЕСБД; | ||
+ | <br>aOnDate - дата на которую необходимо получить класс; | ||
+ | |} | ||
+ | |||
+ | Пример: | ||
+ | |||
+ | <pre> | ||
+ | :GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5; | ||
+ | COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | Команда: '''TABLE''' | ||
+ | |||
+ | Назначение: Вставка/редактирование/удаление данных. Данная команда используется во входящем файле – в качестве команды вставки/изменения данных таблицы, либо в файле ответа – в качестве результата команды. | ||
+ | |||
+ | Синтаксис: | ||
+ | |||
+ | <pre> | ||
+ | :TABLE = <Имя_таблицы> | ||
+ | Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | ||
+ | Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3 | ||
+ | … | ||
+ | :CHILDTABLE=<Имя_дочерней_таблицы> | ||
+ | Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | ||
+ | Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3 | ||
+ | </pre> | ||
+ | |||
+ | Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду. | ||
+ | {| border="1" | ||
+ | !Имя таблицы | ||
+ | !Имя таблицы, в которую производится вставка/редактирование/удаление | ||
+ | |- | ||
+ | |Поле1, Поле2, Поле3 | ||
+ | |Имена полей, разделенные символом табуляции.<br> | ||
+ | Существует так же служебное поле Sys_Is_Deleted_Row – типа логическое – | ||
+ | При значении True – данная запись будет удалена из таблицы. | ||
+ | |- | ||
+ | |Значение1, Значение2, Значение3 | ||
+ | |Перечень значений строки. При удалении записи необходимо указать только значение поля ключа таблицы и заполнить значение поля Sys_Is_Deleted_Row в True | ||
+ | |- | ||
+ | |:CHILDTABLE= | ||
+ | |Необязательный блок CHILDTABLE, по структуре совпадает с блоком :TABLE и обеспечивает сохранение дочерней таблицы в одной транзакции с родительской, например:<br>:TABLE=POLICIES<br>…<br>:CHILDTABLE=POLICIES_TF<br> | ||
+ | …<br>:CHILDTABLE=DRIVERS | ||
+ | |} | ||
+ | |||
+ | '''''(!)Все изменения проводимые командой :TABLE проводятся одной транзакцией, включая блок :CHILDTABLE. Для разделения транзакций, разбивайте блок :TABLE на несколько частей. Для вставки используйте отрицательные значения ключей.''''' | ||
+ | |||
+ | |||
+ | Команда: '''CHANGEID''' | ||
+ | |||
+ | Назначение: Команда используется в ответе сервера приложений ЕСБД и предназначена для возврата идентификаторов записей ЕСБД на команду вставки. | ||
+ | |||
+ | Синтаксис: | ||
+ | <pre> | ||
+ | : CHANGEID | ||
+ | TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID | ||
+ | Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа | ||
+ | … | ||
+ | </pre> | ||
+ | {| border="1" | ||
+ | |TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID | ||
+ | |Заголовок структуры таблицы смены ключей | ||
+ | |- | ||
+ | |Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа | ||
+ | |Имя таблицы, старое значение ключа, новое значение ключа | ||
+ | |} | ||
+ | |||
+ | |||
+ | Команда: '''ERROR''' | ||
+ | |||
+ | Назначение: Используется в файлах-ответах для указания имеющейся ошибки при обработки принимаемых файлов | ||
+ | |||
+ | Синтаксис: | ||
+ | :ERROR=ROW=<Номер строки>;ERRORTEXT=<Тект ошибки> | ||
+ | |||
+ | {| border="1" | ||
+ | |Номер строки | ||
+ | |Номер строки, в которой произошла ошибка. Для табличного блока :TABLE означает номер строки, в которой непосредственно находилась команда :TABLE.<br>Нумерация строк начинается с нуля 0 | ||
+ | |- | ||
+ | |Текст ошибки | ||
+ | |Текст ошибки. | ||
+ | |} |
Текущая версия от 10:50, 31 июля 2008
Описание структуры и команд входящего файла
- Все входящие файлы архивируется в формате ZIP;
- Файлы должны иметь расширение ZIP;
- Имена файлов могут быть любыми на усмотрение страховой компании, но они не должны повторяться;
- Внутри входящего архивного файла могут быть несколько входящих командных файлов;
- Все даты передаются в ЕСБД в формате ДД.ММ.ГГГГ, разделитель целой и дробной части – «.»(точка), разделитель разрядов – отсутствует. Логические поля имеют варианты значения True, False
- Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД.
- Команды входящих командных файлов
Имя команды | Назначение |
---|---|
:GETTABLEDATA= | запрос данных |
:TABLE= | передача данных для вставки/изменения/удаления записи из таблицы |
:CHILDTABLE= | обеспечивает единую транзакцию. Записи будут сохранены, только в случае если была сохранена запись из команды :TABLE |
:DYNAMICCHILDTABLE= | Аналогична команде :CHILDTABLE, только связь с :TABLE – динамическая |
Описание структуры и команд файла-ответа
- На каждый непустой входящий файл, система формирует файл ответа, причем:
Имя файла – имеет формат <Имя_входящего_файла>.ANS.ZIP;
Файл заархивирован в формате ZIP;
Внутри архивного файла-ответа содержатся файлы ответов на командные файлы содержавшиеся во входящем файле;
Имена файлов ответов имеют формат <Имя_командного_файла>.ANS - Команды файлов ответов:
Имя команды | Назначение |
---|---|
:CRCERROR | Ошибка контрольной суммы |
:ERROR= | Ошибка с описанием и указанием номера строки |
:TABLE= | Записи таблицы, сформированные по запросу :GETTABLEDATA |
:CHANGEID | Список выданных ключей |
Принцип формирования файла
- Каждая команда начинается с новой строки без пробелов;
- Все команды, кроме табличных команд, пишутся в одну строку;
- Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД.
- Табличные данные передаются в виде:
- В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду.
- Пример:
:<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции> ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3
Описание команд
Команда :GETTABLEDATA
Назначение: Запрос данных из ЕСБД
Синтаксис:
:GETTABLEDATA=<Имя_Таблицы>;CONDITION=<Условия>;COLUMNS=<Колонки>;
Команда пишется в одной строке. Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.
Имя таблицы | Имя таблицы, из которой осуществляется выборка |
---|---|
Условия | SQL условия, ограничивающие записи (алиас таблицы выборки, для подзапросов - tab99). При работе с полями типа «Дата» используется преобразование TO_DATE(’01.01.2007’,’dd.mm.yyyy’) |
Колонки | колонки из таблицы, так же могут использоваться функции (алиас колонки при этом - обязателен) Доступные функции:
|
Пример:
:GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5; COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS
Команда: TABLE
Назначение: Вставка/редактирование/удаление данных. Данная команда используется во входящем файле – в качестве команды вставки/изменения данных таблицы, либо в файле ответа – в качестве результата команды.
Синтаксис:
:TABLE = <Имя_таблицы> Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3 … :CHILDTABLE=<Имя_дочерней_таблицы> Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.
Имя таблицы | Имя таблицы, в которую производится вставка/редактирование/удаление |
---|---|
Поле1, Поле2, Поле3 | Имена полей, разделенные символом табуляции. Существует так же служебное поле Sys_Is_Deleted_Row – типа логическое – При значении True – данная запись будет удалена из таблицы. |
Значение1, Значение2, Значение3 | Перечень значений строки. При удалении записи необходимо указать только значение поля ключа таблицы и заполнить значение поля Sys_Is_Deleted_Row в True |
:CHILDTABLE= | Необязательный блок CHILDTABLE, по структуре совпадает с блоком :TABLE и обеспечивает сохранение дочерней таблицы в одной транзакции с родительской, например: :TABLE=POLICIES … :CHILDTABLE=POLICIES_TF … |
(!)Все изменения проводимые командой :TABLE проводятся одной транзакцией, включая блок :CHILDTABLE. Для разделения транзакций, разбивайте блок :TABLE на несколько частей. Для вставки используйте отрицательные значения ключей.
Команда: CHANGEID
Назначение: Команда используется в ответе сервера приложений ЕСБД и предназначена для возврата идентификаторов записей ЕСБД на команду вставки.
Синтаксис:
: CHANGEID TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа …
TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID | Заголовок структуры таблицы смены ключей |
Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа | Имя таблицы, старое значение ключа, новое значение ключа |
Команда: ERROR
Назначение: Используется в файлах-ответах для указания имеющейся ошибки при обработки принимаемых файлов
Синтаксис:
:ERROR=ROW=<Номер строки>;ERRORTEXT=<Тект ошибки>
Номер строки | Номер строки, в которой произошла ошибка. Для табличного блока :TABLE означает номер строки, в которой непосредственно находилась команда :TABLE. Нумерация строк начинается с нуля 0 |
Текст ошибки | Текст ошибки. |