Dúvida com arquivos dentro do banco de dados
06/05/2021
0
Preciso de uma ajuda, peguei um banco de dados para trabalhar e acredito que o esquema dele era bem antigo, porque normalmente os arquivos são guardados no banco de dados pelo caminho deles, mas nesse caso, não foram guardados dessa forma. Foram guardados com o que se parece com o código de conteúdo do arquivo, tenho várias mas não consigo abrir nenhum. Já tentei colocar no notepad++ o conteúdo e salvar como a extensão do arquivo mas dá erro na hora de abrir.
Segue o código de uma imagem por exemplo:
?PNG IHDRV???|usRGB???gAMA???a pHYs???o?d??IDATx^??xG?????????\?w?aZ?rxw??M? ?I6??!13?-33J?-[[???,[`dKFIf????????g4?H??? ..."
Tem mais um conteúdo pela frente, teve alguns caracteres que são inválidos mas o notepad++ reconhece eles, alguma ideia de como consigo abrir esses arquivo?
Jonathan
Posts
06/05/2021
Emerson Nascimento
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
07/05/2021
Jonathan
isso é bom para o caso de backup e/ou de trocar o servidor: basta levar o banco, sem precisar se preocupar com arquivos 'agregados'.
tente o seguinte, para o caso apontado acima:
- pegue o conteudo do campo exatamente como está gravado (todo o conteúdo)
- jogue esse conteúdo em um novo (em branco) arquivo no notepad++
- salve o arquivo como TESTE.PNG
- feche o arquivo no notepad++
- dê um duplo-clique no arquivo TESTE.PNG
07/05/2021
Emerson Nascimento
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
13/05/2021
Chromusmaster
https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/
https://www.jitendrazaa.com/blog/sql/sqlserver/export-documents-saved-as-blob-binary-from-sql-server/
Tenho uma procedure que faz essa extração. Colocar ela aqui:
CREATE OR ALTER FUNCTION EXPORTAIMAGEM(@IDIMAGEM uniqueidentifier) RETURNS NVARCHAR(MAX) as BEGIN EXEC master.dbo.xp_cmdshell 'md c:\\EXPORTA'; DECLARE @pctStr INT; DECLARE @image VARBINARY(MAX); DECLARE @MENSAGEM NVARCHAR(MAX); Declare @CreatedDate date; SET @image= ('SUA QUERY DE BUSCA NA TABELA E NO CAMPO DE IMAGENS VEM AQUI'=@IDIMAGEM) SET @CreatedDate=('SUA QUERY DE BUSCA NA TABELA E NO CAMPO DE DATA DE CRIACAO VEM AQUI=@IDIMAGEM); DECLARE @filePath NVARCHAR(MAX) SET @filePath = 'C:\\EXPORTA\\'+CONVERT(nvarchar(MAX),YEAR(@CreatedDate))+'_'+CONVERT(nvarchar(MAX),Month(@CreatedDate))+'_'+CONVERT(nvarchar(MAX),@IDIMAGEM)+'.jpg' EXEC sp_OACreate 'ADODB.Stream', @pctStr OUTPUT EXEC sp_OASetProperty @pctStr, 'Type', 1 EXEC sp_OAMethod @pctStr, 'Open' EXEC sp_OAMethod @pctStr, 'Write', NULL, @image EXEC sp_OAMethod @pctStr, 'SaveToFile', NULL,@filePath, 2 EXEC sp_OAMethod @pctStr, 'Close' EXEC sp_OADestroy @pctStr SET @MENSAGEM=(SELECT CASE WHEN @IMAGE IS NULL THEN 'Imagem_'+ CONVERT(nvarchar(MAX),@IDIMAGEM) +'.jpg' +' ERRO! VERIFIQUE SE A IMAGEM EXISTE CADASTRADA NO BANCO DE DADOS!' ELSE 'Imagem_'+CONVERT(nvarchar(MAX),@IDIMAGEM)+'.jpg_SUCESSO!' END) RETURN @MENSAGEM END
13/05/2021
Emerson Nascimento
você só precisa ser atentar ao fato de que a function grava o arquivo com extensao jpg e no caso que você apresentou deve ser png
Clique aqui para fazer login e interagir na Comunidade :)