No formato de entrada via banco de dados, o mesmo conteúdo de arquivo que seria disponibilizado em um diretório no formato anterior, deve ser inserido em uma tabela pré-definida. Esta tabela pode ser criada em qualquer um dos seguintes Sistemas Gerenciadores de Bancos de Dados (SGBD's):
•Microsoft SQL Server 2005;
•Microsoft SQL Server 2008;
•Microsoft SQL Server 2012;
•Microsoft SQL Server 2014;
•Microsoft SQL Server 2016;
•Microsoft SQL Server 2017;
•MySQL 5.1;
•Oracle 10g;
•Oracle 11g;
•Oracle 12c;
•IBM DB2 versão 9;
•IBM Informix 9.40;
•IBM Informix 11.50;
•IBM Informix 12.10.
A tabela de entrada de dados deverá possuir, obrigatoriamente, as colunas a seguir:
•ID – chave primária sequencial;
•DOCUMENTDATA – conteúdo do documento a ser processado;
•STATUS – deve ser inserido sempre com o valor ZERO, o que indicará para o sistema que o documento ainda não foi processado;
•JOB – O valor inserido nesta coluna deve corresponder com a chave normal ou de eventos do Job (ponto emissor).
•DOCUMENTUSER – Campo opcional que permite ao ERP fazer controle de qual usuário disparou a inserção do documento na tabela de entrada;
•KIND – Campo obrigatório que determina para o sistema o formato do arquivo inserido na tabela. Este campo pode receber os seguintes valores:
0 – TXT;
1 – XML;
2 – PDF;
3 – Outros.
A tabela de entrada de documentos pode possuir colunas adicionais, para controles do ERP, porém essas alterações sobre a estrutura padrão devem ser reportadas à NDDigital, a qual fará a análise evitando que ocorram problemas como concorrência de banco de dados, entre outros. |
A seguir são listados os scripts de criação da estrutura padrão, nos diferentes SGBD’s suportados:
O nome da tabela, TBDATABASEINPUT, é apenas uma sugestão. |
SGBD MSSQL SERVER 2005 / MSSQL SERVER 2008 / MSSQL SERVER 2012 / MSSQL SERVER 2014 /MSSQL SERVER 2016 /MSSQL SERVER 2017
SET ANSI_NULLS ON [id] [bigint] IDENTITY(1,1) NOT NULL, [documentdata] [varbinary](max) NOT NULL, [status] [smallint] NOT NULL, [job] [varchar](60) NULL, [documentuser] [varchar](30) NULL, [kind] [smallint] NOT NULL, CONSTRAINT [PK_tbdatabaseinput] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[tbdatabaseinput]') AND name = N'IX_tbdatabaseinput') CREATE NONCLUSTERED INDEX [IX_tbdatabaseinput] ON [dbo].[tbdatabaseinput] ( [status] ASC, [job] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] |
SGBD ORACLE
/ CREATE TABLE NDDCONNECTOR.TBDATABASEINPUT ( ID NUMBER(20) NOT NULL, DOCUMENTDATA BLOB NOT NULL, STATUS NUMBER(5) NOT NULL, JOB VARCHAR2(60), DOCUMENTUSER VARCHAR2(30) NULL, KIND NUMBER(5) NOT NULL, CONSTRAINT TBDATABASEINPUT_PK PRIMARY KEY(ID) ENABLE ) / CREATE INDEX TBDATABASEINPUT_IDX1 ON TBDATABASEINPUT (STATUS, JOB) / CREATE SEQUENCE TBDATABASEINPUT_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER / CREATE OR REPLACE TRIGGER "BI_TBDATABASEINPUT" BEFORE INSERT ON TBDATABASEINPUT FOR EACH ROW WHEN (new.ID IS NULL) BEGIN SELECT "TBDATABASEINPUT_SEQ".NEXTVAL INTO :new.ID FROM dual; END; / ALTER TRIGGER "BI_TBDATABASEINPUT" ENABLE; / |
SGBD DB2
CREATE TABLE TBDATABASEINPUT ( ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH +0 INCREMENT BY +1 MINVALUE +0 MAXVALUE +9223372036854775807 NO CYCLE NO CACHE NO ORDER )PRIMARY KEY, DOCUMENTDATA BLOB NOT NULL, STATUS INTEGER NOT NULL, JOB VARCHAR(60), DOCUMENTUSER VARCHAR(30) NULL, KIND INTEGER NOT NULL); COMMIT; CREATE INDEX "TBDATABASEINPUT_IDX1" ON "TBDATABASEINPUT" ("STATUS","JOB"); |
SGBD IBM INFORMIX
CREATE TABLE TBDATABASEINPUT ( ID SERIAL8, DOCUMENTDATA BYTE NOT NULL, STATUS INTEGER NOT NULL, JOB VARCHAR(60), DOCUMENTUSER VARCHAR(30), KIND INTEGER NOT NULL);
CREATE INDEX TBDATABASEINPUT_IDX1 ON TBDATABASEINPUT (STATUS,JOB);
alter table TBDATABASEINPUT modify lock mode (ROW); |
SGBD MySQL 5.1
CREATE TABLE `tbdatabaseinput` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `DOCUMENTDATA` MEDIUMBLOB NOT NULL, `STATUS` tinyint(4) NOT NULL, `JOB` varchar(30) DEFAULT NULL, `DOCUMENTUSER` varchar(30) DEFAULT NULL, `KIND` smallint(6) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `ID_UNIQUE` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX ix_tbdatabaseinput_1 ON tbdatabaseinput(status, job); |