A ferramenta Entrada de Blob tem um fluxo de trabalho de exemplo. Visite Exemplos de fluxos de trabalho para saber como acessar esse e muitos outros exemplos diretamente do Alteryx Designer. Show Use a ferramenta Entrada de Blob para fazer a leitura de um Binary Large Object, como, por exemplo, um arquivo de imagem ou mídia, navegando diretamente para um arquivo ou fazendo a entrada de uma lista de arquivos. Configurar a ferramentaA ferramenta Entrada de Blob pode ser uma ferramenta de entrada ou de passagem (onde uma lista de arquivos é transmitida para que a ferramenta os leia). Configurar como ferramenta de entradaNome do arquivo: especifique o nome do arquivo que contém o blob a ser lido. Todos os tipos de arquivos são compatíveis. Configurar como ferramenta de passagem
Configuração da ferramenta para entrada ou passagem
Não tenho a certeza de quanto de um exemplo do "mundo real" isto é, mas tenho actualmente uma aplicação lá fora que guarda detalhes para um jogo de cartas de negociação, incluindo as imagens para as cartas. Dado que a contagem de registros para o banco de dados é de apenas 2851 registros até à data, mas dado o fato de que certas cartas foram lançadas várias vezes e têm obras de arte alternativas, foi realmente mais eficiente em termos de tamanho para digitalizar o "quadrado primário" da arte e, em seguida, dinamicamente gerar a fronteira e efeitos diversos para o cartão quando solicitado. O criador original desta biblioteca de imagens criou uma classe de acesso de dados que torna a imagem baseada no pedido, e fá-lo muito rapidamente para visualização e cartão individual. Isto também facilita a Implementação / Actualizações quando são lançados novos cartões, em vez de fechar uma pasta inteira de imagens e enviá-los para o cano e garantir que a estrutura de pastas adequada é criada, eu simplesmente actualizo a base de dados e tenho o utilizador faz o download outra vez. Isso atualmente tem um tamanho de até 56MB, o que não é ótimo, mas eu estou trabalhando em um recurso de atualização incremental para futuros lançamentos. Além disso, há uma versão "no images" da aplicação que permite que aqueles over dial-up para obter a aplicação sem o atraso de download. Esta solução tem funcionado muito bem até à data, uma vez que a aplicação em si é orientada como uma única instância no ambiente de trabalho. Há um site onde todos estes dados são arquivados para acesso on-line, mas eu não utilizaria, de modo algum, a mesma solução para este problema. Concordo que o acesso aos ficheiros seria preferível, porque melhoraria a frequência e o volume dos pedidos que estão a ser feitos para as imagens. Espero que isto não seja muito tagarelar, mas eu vi o tópico e queria fornecer alguns meus insights de uma aplicação de pequena e média escala relativamente bem sucedida. Por Eduardo Legatti
Olá,
No artigo anterior, eu demonstrei através de exemplos práticos, não só como gerar arquivos externos ao banco de dados, mas também como ler o conteúdo dos mesmos através da package UTL_FILE. Foi demonstrado também um exemplo prático de como carregar arquivos binários para colunas do tipo da dado BLOB em tabelas de banco dados, através do uso da package DBMS_LOB. Bom, o objetivo deste artigo será o de demonstrar a operação inversa, ou seja, demonstrar como salvar o conteúdo de um campo BLOB para um arquivo em disco. Para realizar esta operação utilizarei uma stored procedure que chamarei de BLOB_TO_FILE. No mais, vamos aos exemplos práticos ... Vale a pena salientar que para esta demonstração, utilizarei o mesmo objeto directory ARQUIVO_DIR que foi criado e discutido no artigo anterior. SQL> select * from all_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------- ------------------------ --------------------- SYS ARQUIVO_DIR /tmpAproveitando também a estrutura criada e discutida no artigo anterior, irei carregar várias imagens (*.jpg) para a tabela TAB_IMAGEM fazendo uso da stored procedure CARREGA_IMAGEM, mas com algumas modificações que não vem ao caso. Para maiores detalhes sobre a stored procedure CARREGA_IMAGEM, acesse o artigo anterior. Após realizados os procedimentos acima, a tabela TAB_IMAGEM ficou populada conforme demonstrado abaixo: SQL> select * from tab_imagem order by id; ID NOME IMAGEM ---------- -------------------- --------------------------------------------------------- 1 imagem1.jpg 474946383961DF005100C40000FFFFFFFF00000000009F9F9FFFB ... 2 imagem2.jpg 474946383961DF005100C40000FFFFFFFF00000000009F9F9FFFB ... 3 imagem3.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 4 imagem4.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 5 imagem5.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 6 imagem6.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 7 imagem7.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 8 imagem8.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 9 imagem9.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 10 imagem10.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 11 imagem11.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 12 imagem12.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 13 imagem13.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 14 imagem14.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 15 imagem15.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 16 imagem16.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 17 imagem17.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 18 imagem18.jpg FFD8FFE000104A46494600010101004800480000FFE1380768747 ... 19 imagem19.jpg 474946383961DF005100C40000FFFFFFFF00000000009F9F9FFFB ... 20 imagem20.jpg 474946383961DF005100C40000FFFFFFFF00000000009F9F9FFFB ... 21 imagem21.jpg 474946383961DF005100C40000FFFFFFFF00000000009F9F9FFFB ... 21 linhas selecionadas.A questão agora é: Como fazer a operação inversa? Digo, como salvar estas imagens de volta para o disco? Bom, depois de algumas pesquisas em alguns sites, blogs, documentação da Oracle, além de realizar alguns ajustes e modificações em códigos PL/SQL aqui e outros ali, cheguei ao fim da criação de uma stored procedure genérica na qual chamei de BLOB_TO_FILE. Para realizar o download do código PL/SQL de criação da stored procedure, clique aqui. SQL> desc blob_to_file PROCEDURE blob_to_file Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- P_DIRETORIO VARCHAR2 IN P_TABELA VARCHAR2 IN P_COL_NOME VARCHAR2 IN P_COL_BLOB VARCHAR2 INPodemos ver pela saída do comando DESCRIBE acima, que a procedure BLOB_TO_FILE aceita 4 parâmetros de entrada:
No mais, irei executar abaixo a stored procedure BLOB_TO_FILE afim de criar os arquivos (*.jpg) no diretório definido pelo objeto directory ARQUIVO_DIR. Irei ativar o parâmetro SERVEROUTPUT do SQL*Plus para "ON" apenas para gerar uma saída de texto, enquanto os registros vão sendo processados pela stored procedure: C:\>sqlplus scott/tiger SQL*Plus: Release 11.1.0.6.0 - Production on Seg Jan 11 18:31:56 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. Conectado a: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> set serveroutput on SQL> execute blob_to_file('ARQUIVO_DIR','TAB_IMAGEM','NOME','IMAGEM'); Tamanho: 1852 bytes para o arquivo: imagem1.jpg Finalizada a leitura de 1852 bytes para o arquivo: imagem1.jpg Arquivo criado em disco com sucesso Tamanho: 1852 bytes para o arquivo: imagem2.jpg Finalizada a leitura de 1852 bytes para o arquivo: imagem2.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem3.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem3.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem4.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem4.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem5.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem5.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem6.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem6.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem7.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem7.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem8.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem8.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem9.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem9.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem10.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem10.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem11.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem11.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem12.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem12.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem13.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem13.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem14.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem14.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem15.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem15.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem16.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem16.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem17.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem17.jpg Arquivo criado em disco com sucesso Tamanho: 218684 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 32767 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 65534 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 98301 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 131068 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 163835 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 196602 bytes para o arquivo: imagem18.jpg Finalizada a leitura de 218684 bytes para o arquivo: imagem18.jpg Arquivo criado em disco com sucesso Tamanho: 1852 bytes para o arquivo: imagem19.jpg Finalizada a leitura de 1852 bytes para o arquivo: imagem19.jpg Arquivo criado em disco com sucesso Tamanho: 1852 bytes para o arquivo: imagem20.jpg Finalizada a leitura de 1852 bytes para o arquivo: imagem20.jpg Arquivo criado em disco com sucesso Tamanho: 1852 bytes para o arquivo: imagem21.jpg Finalizada a leitura de 1852 bytes para o arquivo: imagem21.jpg Arquivo criado em disco com sucesso Procedimento PL/SQL concluído com sucesso. SQL> exit Desconectado de Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAo finalizar a execução do procedimento BLOB_TO_FILE, poderemos ver abaixo os arquivos que foram criados no diretório "/tmp" [oracle@linux tmp]$ ls -lh total 3,5M -rw-r--r-- 1 oracle oinstall 1,9K Jan 12 18:37 imagem1.jpg -rw-r--r-- 1 oracle oinstall 1,9K Jan 12 18:37 imagem2.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem3.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem4.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem5.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem6.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem7.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem8.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem9.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem10.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem11.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem12.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem13.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem14.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem15.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem16.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem17.jpg -rw-r--r-- 1 oracle oinstall 214K Jan 12 18:37 imagem18.jpg -rw-r--r-- 1 oracle oinstall 1,9K Jan 12 18:37 imagem19.jpg -rw-r--r-- 1 oracle oinstall 1,9K Jan 12 18:37 imagem20.jpg -rw-r--r-- 1 oracle oinstall 1,9K Jan 12 18:37 imagem21.jpg Abaixo, após abrir o arquivo imagem1.jpg e o arquivo imagem10.jpg em um editor ou visualizador de imagens, poderemos verificar que os mesmos foram salvos em disco de forma consistente, ou seja, são arquivos válidos sem qualquer corrupção em seus dados. |