Entrada via Banco de Dados

Anterior
Próximo
Feedback
Imprimir

Entrada via Banco de Dados

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;

MySQL 5.1;

Oracle 10g;

Oracle 11g;

Oracle 12c;

IBM DB2 versão 9;

IBM Informix 9.40;

IBM Informix 11.50.

 

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

 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbdatabaseinput]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tbdatabaseinput](

 [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);