Clipper On Line • Ver Tópico - COMO GRAVAR UM PDF NO BANCO MARIADB ?

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Discussão sobre SQL

Moderador: Moderadores

 

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor Fernando queiroz » 30 Mai 2020 22:08

Segui as instruções como encontrei no site do MARIADB e usei

UPDATE PAGAR SET PAGAR.RECIBO=LOAD_FILE( 'C:/TEMP/XMLPDFPAGAR/004947444_01.PDF') WHERE PAGAR_ID ='00000000001'

mas o PDF nao foi carregado no banco, to meio perdido com o assunto, alguem ja usa esse tipo

criei o campo RECIBO LONGBLOB , MAS MESMO assim nao consegui exito
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor tonicm » 31 Mai 2020 08:39

Eu uso assim no Mysql.
Espero ter ajudado.

Criar a tabela:
      ExecutaMySQL( "CREATE TABLE `pdf_ficheiros` ( "+;
                    "   `ID` SMALLINT(6) NOT NULL AUTO_INCREMENT, "+;
                    "   `NOME` VARCHAR(50) NOT NULL, "+;
                    "   `FICHEIRO` MEDIUMBLOB NOT NULL, "+;
                    "   UNIQUE INDEX `ID` (`ID`) "+;
                    ") "+;
                    "COLLATE='utf8_general_ci' "+;
                    "ENGINE=InnoDB "+;
                    ";" )



Gravar o ficheiro na base de dados:
PROCEDURE GRAVAR_BLOB( XCAMINHO, XFILE )
   LOCAL h1, tamanho, h4

   h1 := FOpen(XCAMINHO+XFILE)          // abre o arquivo de imagem para leitura
   tamanho := FSeek(h1, 0, 2)           // move o ponteiro pelo arquivo até o fim para pegar o tamanho
   FSeek(h1, 0, 0)                      // volta para o início
   h4 := Space(tamanho)                 // declara variável para receber o conteúdo do arquivo
   FRead(h1, @h4, tamanho)              // faz a leitura do conteúdo do arquivo jogando-a na variável de memória
   FClose(h1)                           // fecha o arquivo
   h4 := hb_base64Encode(h4, tamanho)   // converte o conteúdo do arquivo em base64

   ExecutaMySQL( "INSERT INTO pdf_ficheiros(NOME,FICHEIRO) "+;
                 "SELECT '"+XFILE+"','"+h4+"'" )
RETURN


Gravar o ficheiro no disco:
PROCEDURE LER_BLOB(XID)
   oRsxB := ExecutaMySQL( "SELECT NOME,FICHEIRO "+;
                          "FROM pdf_ficheiros "+;
                          "WHERE ID="+ALLSTR(XID) )
   XiJPG := oRsxB:Fields( 1 ):Value
   iJPG := Array( 1, 1 )
   iJPG[1, 1] := XiJPG

   sJPG := hb_base64Decode( iJPG[1, 1] )                        // decodifica o conteúdo do campo blob (iJPG[1,1] é o resultado da sentença SQL)
   hJPG := FCreate("C:\TEMP\"+oRsxB:Fields( 0 ):Value, 0)       // cria um arquivo
   oRsxB:Close()
   FWrite(hJPG, sJPG)                                           // carrega o conteúdo do campo no arquivo
   FClose(hJPG)
RETURN
tonicm
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 55
Data de registro: 08 Mar 2016 21:51
Cidade/Estado: Porto
Curtiu: 12 vezes
Mens.Curtidas: 1 vez

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor Vlademiro » 31 Mai 2020 12:46

Muito interessante. Uma dúvida: já li, na internet, que o uso de campos do tipo BLOB compromete a performance do banco. Minha pergunta é: na prática isso tem acontecido com você ? Quantos registros a sua tabela tem ?

Notei que vc criou uma tabela só para armazenar esses arquivos. Essa medida tem lhe ajudado ?
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor tonicm » 31 Mai 2020 15:39

Utilizo BLOB em várias tabelas, mas ainda tenho poucos registos - a maior tem pouco mais de 550 registos.
Nesta tabela do meu exemplo guardei apenas o ficheiro, mas tenho outras tabelas com vários dados além do campo BLOB.
Acho que depende dos dados que precisa armazenar, não é necessariamente obrigatório guardar os campos BLOB numa tabela à parte.
Para já não tive qualquer problema.
tonicm
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 55
Data de registro: 08 Mar 2016 21:51
Cidade/Estado: Porto
Curtiu: 12 vezes
Mens.Curtidas: 1 vez

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor Fernando queiroz » 31 Mai 2020 17:41

FIZ a opcao de gravar em uma tabela somente de recibos acho que fica melhor e todas as rotinas que geram recibos quardam la
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor ANDRIL » 31 Mai 2020 18:43

Só em questão de armazenamento no DB, lembre-se que ao converter para base64 o conteúdo do arquivo aumenta consideravelmente.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor Fernando queiroz » 31 Mai 2020 19:15

Rotina pronta ficou super legal e muito rápida, valeu a ajuda tonicm
ja estou gravando PDF, JPG
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor pauloa1 » 20 Jul 2021 17:59

Olá Tonicm!!!

Vi que vc criou o campo tipo FICHEIRO = MEDIUMBLOB NOT NULL

Saberia dizer qual tipo de campo seria no postgresql ?

Paulo
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 223
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor Itamar M. Lins Jr. » 21 Jul 2021 11:23

Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

COMO GRAVAR UM PDF NO BANCO MARIADB ?

Mensagempor pauloa1 » 22 Jul 2021 14:31

Obrigado Itamar!!
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 223
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro