COMO GRAVAR UM PDF NO BANCO MARIADB ?
Moderador: Moderadores
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
COMO GRAVAR UM PDF NO BANCO MARIADB ?
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
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
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Eu uso assim no Mysql.
Espero ter ajudado.
Criar a tabela:
Gravar o ficheiro na base de dados:
Gravar o ficheiro no disco:
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 "+;
";" )
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+"'" )
RETURNCó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 ?
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 ?
Notei que vc criou uma tabela só para armazenar esses arquivos. Essa medida tem lhe ajudado ?
COMO GRAVAR UM PDF NO BANCO MARIADB ?
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.
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.
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
COMO GRAVAR UM PDF NO BANCO MARIADB ?
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
COMO GRAVAR UM PDF NO BANCO MARIADB ?
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
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Rotina pronta ficou super legal e muito rápida, valeu a ajuda tonicm
ja estou gravando PDF, JPG
ja estou gravando PDF, JPG
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
pauloa1
- Usuário Nível 3

- Mensagens: 227
- Registrado em: 25 Jun 2008 14:57
- Localização: Augusto Pestana-RS
COMO GRAVAR UM PDF NO BANCO MARIADB ?
Olá Tonicm!!!
Vi que vc criou o campo tipo FICHEIRO = MEDIUMBLOB NOT NULL
Saberia dizer qual tipo de campo seria no postgresql ?
Paulo
Vi que vc criou o campo tipo FICHEIRO = MEDIUMBLOB NOT NULL
Saberia dizer qual tipo de campo seria no postgresql ?
Paulo
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez

