Файловый обмен: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) (finish2) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 56: | Строка 56: | ||
* В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду. | * В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду. | ||
* Пример: | * Пример: | ||
− | + | <pre> | |
− | + | :<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции> | |
− | + | ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3 | |
+ | </pre> | ||
Строка 94: | Строка 95: | ||
<pre> | <pre> | ||
− | :GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5;COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS | + | :GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5; |
+ | COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS | ||
</pre> | </pre> | ||
Строка 104: | Строка 106: | ||
Синтаксис: | Синтаксис: | ||
− | + | <pre> | |
− | + | :TABLE = <Имя_таблицы> | |
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | ||
− | |||
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3 | Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3 | ||
− | |||
… | … | ||
− | |||
:CHILDTABLE=<Имя_дочерней_таблицы> | :CHILDTABLE=<Имя_дочерней_таблицы> | ||
− | |||
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3 | ||
− | |||
Значение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 |
Текст ошибки | Текст ошибки. |