Migração de arquivos do tipo BLOB para sistema de arquivos

Em determinada fase de um projeto, pode ser necessário realizar a migração de arquivos do tipo BLOB armazenados em um banco de dados, para sistema de arquivos. Há diversas formas de realizar esse procedimento. Neste artigo irei demonstrar como realizar essa migração de dados, fazendo a leitura de arquivos em formato PDF a partir do SGBD Oracle e, gravando em disco, utilizando a linguagem de programação Python.

[ Hits: 9.115 ]

Por: Anderson Ribeiro em 09/05/2018


Estrutura da tabela e inserção de registros



O intuito deste artigo é compartilhar um pouco da minha experiência com migração de arquivos BLOB em um banco de dados Oracle para sistema de arquivos utilizando Python.

Antes de efetivamente partirmos para o código de migração, vamos ver os dados de acesso e como será a estrutura da tabela.

Utilizo os seguintes dados de acesso para o esquema no Oracle:
  • user: desv
  • pass: 123456
  • service name: xe
  • IP do host onde está o SGBD do Oracle: 192.168.1.131

Vamos utilizar a estrutura da tabela a seguir:

CREATE TABLE TB_ARQUIVO (
	COD_ARQUIVO           NUMBER PRIMARY KEY,
	DTHINCLUSAO           DATE NOT NULL,
	ARQUIVO               BLOB,
	DS_ARQUIVO            VARCHAR2(50 BYTE),
	DS_PATH_ARQUIVO       VARCHAR2(255 BYTE)
);

A tabela TB_ARQUIVO contém as seguintes colunas:
  • COD_ARQUIVO: coluna para identificar um registro como único (chave primária)
  • DTHINCLUSAO: armazena a data de inclusão do arquivo
  • ARQUIVO: armazena um arquivo em formado PDF
  • DS_ARQUIVO: define um nome para o arquivo
  • DS_PATH_ARQUIVO: path, onde o arquivo ficará gravado em disco

Vamos inserir alguns registros:

INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(1,'ORACLE','30/05/2016');
INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(2,'LINUX','31/05/2016');
INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(3,'BIGDATA','30/05/2017');
INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(4,'HADOOP','29/05/2017');
INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(5,'DATAMINING','01/02/2018');
INSERT INTO TB_ARQUIVO(COD_ARQUIVO,DS_ARQUIVO,DTHINCLUSAO) VALUES(6,'PYTHON','01/02/2018');
COMMIT;

O script SQL está disponível no seguinte link: https://pastebin.com/0FabU0qY

Após a inserção, precisamos adicionar os arquivos PDFs.

Como são apenas seis registros, podemos adicionar os arquivos de forma rápida pelo Oracle SQL Developer.

No SQL Developer, após a criação da tabela e inserção dos registros, clique no nome da tabela "TB_ARQUIVO" e clique em "Dados".

Na ferramenta, deverá ser exibido algo igual à imagem a seguir:
Agora, dê dois cliques abaixo da coluna ARQUIVO, onde aparece o nome "null". Veja que aparece um ícone com a imagem de um lápis. Clique em cima do ícone.

Deverá aparecer a janela da figura a seguir:
Clique na opção "Carregar" e selecione um arquivo PDF qualquer. Depois é só repetir os passos anteriores para os demais registros. Observe a imagem a seguir:
Veja que "null" foi substituído por "BLOB", pois os arquivos PDF já foram inseridos na tabela, entretanto, falta efetivar a transação. Basta clicar na opção onde o ponteiro do mouse está apontando, ou então, teclar em F11.

Após as ações realizadas em banco, vamos partir para os requisitos para realizar a migração.

    Próxima página

Páginas do artigo
   1. Estrutura da tabela e inserção de registros
   2. Requisitos da migração
Outros artigos deste autor

Configurando uma instância do Oracle para acesso via Python

Leitura recomendada

Memórias Database Oracle (SGA x PGA) - Entenda a diferença e como calcular a HugePages

Oracle XE 11.2 no Slackware 14.0 64 bits - Instalação e configuração

Instalação do Oracle Database 10g R2 no Debian Etch 4

Instalação do Oracle 10g Client no Red Hat Enterprise Server 4

Configurando o SuSE Linux para o Oracle 10g

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts