Página 1 de 1
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 30 Mai 2020 22:08
por Fernando queiroz
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
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 08:39
por tonicm
Eu uso assim no Mysql.
Espero ter ajudado.
Criar a tabela:
Código: Selecionar todos
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:
Código: Selecionar todos
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:
Código: Selecionar todos
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
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 12:46
por Vlademiro
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 ?
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 15:39
por tonicm
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.
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 17:41
por Fernando queiroz
FIZ a opcao de gravar em uma tabela somente de recibos acho que fica melhor e todas as rotinas que geram recibos quardam la
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 18:43
por ANDRIL
Só em questão de armazenamento no DB, lembre-se que ao converter para base64 o conteúdo do arquivo aumenta consideravelmente.
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 31 Mai 2020 19:15
por Fernando queiroz
Rotina pronta ficou super legal e muito rápida, valeu a ajuda tonicm
ja estou gravando PDF, JPG
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 20 Jul 2021 17:59
por pauloa1
Olá Tonicm!!!
Vi que vc criou o campo tipo FICHEIRO = MEDIUMBLOB NOT NULL
Saberia dizer qual tipo de campo seria no postgresql ?
Paulo
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 21 Jul 2021 11:23
por Itamar M. Lins Jr.
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Enviado: 22 Jul 2021 14:31
por pauloa1
Obrigado Itamar!!