Ir para conteúdo
Fórum Script Brasil
  • 0

Dumpfile - Extraindo Arquivo De Um Blob


Yuri Crisostomo

Pergunta

Olá a todos do fórum.

Essa é pra quem manja mesmo hein!? :ph34r: ... hehe... faz tempo que estou procurando a resposta...

Bom... preciso de uma query que extraia o arquivo de um campo LONGBLOB (do servidor) e armazene no computador cliente... de preferência diretamente...

Tudo o que consegui até agora foi fazer a extração deste arquivo somente para um diretório no próprio servidor, mas não faz sentido, uma vez que eu preciso do arquivo na máquina cliente... :blink:

Isto deve ser possível, uma vez que o MySQL Query Browser consegue fazer esta tarefa. Precisava apenas saber como!? <_<

Ah... minha aplicação é em VB + MySQL 5.0...

Já ouvi referências de um tal "MySQLQueryDump"... dizia que resolvia este problema... mas foi apenas isto... não encontrei nada de produtivo pela internet...

Obrigado a todos!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

MySQL 5.0 Reference Manual, again:

The SELECT ... INTO OUTFILE statement is intended primarily to let you very quickly dump a table to a text file on the server machine. If you want to create the resulting file on some client host other than the server host, you cannot use SELECT ... INTO OUTFILE. In that case, you should instead use a command such as mysql -e "SELECT ..." > file_name to generate the file on the client host.

:blink:

Só um detalhe, o MySQL Query Browser não é uma aplicação 100% escrita em MySQL... Além disso, lembre-se que, quando executando uma aplicação Web, esta está sendo executada no servidor, salvo casos de miniaplicativos incorporados...

Link para o comentário
Compartilhar em outros sites

  • 0
MySQL 5.0 Reference Manual, again:

The SELECT ... INTO OUTFILE statement is intended primarily to let you very quickly dump a table to a text file on the server machine. If you want to create the resulting file on some client host other than the server host, you cannot use SELECT ... INTO OUTFILE. In that case, you should instead use a command such as mysql -e "SELECT ..." > file_name to generate the file on the client host.

:blink:

Só um detalhe, o MySQL Query Browser não é uma aplicação 100% escrita em MySQL... Além disso, lembre-se que, quando executando uma aplicação Web, esta está sendo executada no servidor, salvo casos de miniaplicativos incorporados...

:)

Então carinha... muito obrigado pela resposta, mas eu não consegui montar uma Query que rodasse utilizando a dica acima.

Você teria como me dar um exemplo um pouco mais concreto !?...

Veja o que eu entendi: Se eu quiser criar um "arquivo resultante" no host cliente que não seja o host server, você não poderá utilizar "SELECT ... INTO OUTFILE". Neste cado, você deverá tentar usar um comando como mysql -e "SELECT ..." > file_name para gerar o arquivo no host cliente.

Muito bem... de fato o que eu preciso tem mais haver com a parte marcada em vermelho, mas não consigo montar nenhuma Query que funcione seguindo o exemplo citado. :blink: Por favor, se você puder me ajudar com algo que facilite a minha compreensão, como um exemplo, eu ficaria muito grato! :)

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é que

mysql -e "select ..." > file_name...

não é uma query, mas um comando do shell. Mas a preocupação principal é que esse comando tem que ser executado em um cliente MySQL conectado ao seu banco e com permissão para escrever no caminho indicado por "file_name...".

:blink:

Ou seja, você tem que pensar em montar uma linha de comando completa que faça conexão e execute a query... Sendo que antes já deve ter assegurado que o caminho está acessível para a criação do arquivo de saída.

Ou não... :D

Link para o comentário
Compartilhar em outros sites

  • 0
O problema é que

mysql -e "select ..." > file_name...

não é uma query, mas um comando do shell. Mas a preocupação principal é que esse comando tem que ser executado em um cliente MySQL conectado ao seu banco e com permissão para escrever no caminho indicado por "file_name...".

:blink:

Ou seja, você tem que pensar em montar uma linha de comando completa que faça conexão e execute a query... Sendo que antes já deve ter assegurado que o caminho está acessível para a criação do arquivo de saída.

Ou não... :D

Vixe... eu entendi o que você quis dizer... mas não compreendi o que tenho que fazer... :blink:

Bom... minha aplicação é em VisualBasic 6... Tenho pleno controle na a criação de um arquivo... até aí... parece-me estar sem problemas... mas a minha grande dificuldade é sobre a sintaxe do comando... você saberia me dar um exemplo de como ficaria este "comando do shell" no vb!? :ph34r: Ou melhor... um exemplo da sintaxe dele, dentro dos limites do vb...

Já perguntei no fórum de VB aqui mesmo no ScriptBrasil e ninguém me respondeu... :huh:

Muito grato pela ajuda. :lol:

Um exemplo do comando que eu estou usando e que funiona (quase) perfeitamente (pelo detalhe de que ele não cria o arquivo no computador cliente, mas sim apenas no servidor), é este:

'Declaração

Dim Arquivo As String

Dim Cmd As New ADODB.Command

'Definindo o endereço do arquivo a ser criado

Arquivo = "C:\TEMP\" & txtCod.Text & ".tmp"

'Apagando o arquivo existente, para a gravação do próximo

Kill (Arquivo)

'Rodando os comandos Sql

Cmd.CommandText = "select ARQUIVO from CAD where COD ='" & txtCod.Text & "' into dumpfile '" & Arquivo & "'"

Cmd.Execute

'Abrindo o arquivo carregado do banco no endereço atribuído à variável "Arquivo"

Text1.LoadFile (Arquivo)

(Lembrando mais uma vez de que se o programa rodar no mesmo computador em que o banco de dados está, funciona perfeitamente, porém, se eu rodar o programa para acessar o banco via rede, ele gera o arquivo, porém no drive "C:\" do computador do servidor -> Preciso que gere no computador em que a aplicação esteja rodando, independentemente dela ser o servidor ou não)

Grato.

Editado por Yuri Crisostomo
Link para o comentário
Compartilhar em outros sites

  • 0

Olha só, não fiz testes (estou no computador da minha sogra <_< ), mas vamos raciocinar um pouco (tipo Telecurso 2000 :lol: ):

- A query com "into dumpfile" funciona beleza no servidor, porque é lá que o MySQL executa a query;

- O comando adequado para realizar isto no cliente é

mysql -e "select bla bla bla..." > file_name...

- Para executar isto, o cliente tem que ter mysql para conectar ao banco que está no servidor (e para executar "mysql -e ...", óbvio);

- Logo, você tem que montar, do lado do cliente, uma seqüência de linhas de comando que contenha a chamada a "mysql -e" com a seleção dos dados necessários e com o direcionamento para o arquivo de saída desejado, e que para executar isto já garanta que a conexão com o banco esteja funcionando.

- Para saber qual seqüencia deve ser criada, sugiro ir para o Prompt no cliente e executar o comando "mysql" (não tenho como testar isso hoje... lembra, casa da sogra <_< ) e anotar os comandos necessários.

- Com a seqüência pronta, vai pro VB e dá seu show!

B)

Link para o comentário
Compartilhar em outros sites

  • 0
Olha só, não fiz testes (estou no computador da minha sogra <_< ), mas vamos raciocinar um pouco (tipo Telecurso 2000 :lol: ):

- A query com "into dumpfile" funciona beleza no servidor, porque é lá que o MySQL executa a query;

- O comando adequado para realizar isto no cliente é

mysql -e "select bla bla bla..." > file_name...

- Para executar isto, o cliente tem que ter mysql para conectar ao banco que está no servidor (e para executar "mysql -e ...", óbvio);

- Logo, você tem que montar, do lado do cliente, uma seqüência de linhas de comando que contenha a chamada a "mysql -e" com a seleção dos dados necessários e com o direcionamento para o arquivo de saída desejado, e que para executar isto já garanta que a conexão com o banco esteja funcionando.

- Para saber qual seqüencia deve ser criada, sugiro ir para o Prompt no cliente e executar o comando "mysql" (não tenho como testar isso hoje... lembra, casa da sogra <_< ) e anotar os comandos necessários.

- Com a seqüência pronta, vai pro VB e dá seu show!

B)

ok Carinha... muito obrigado...

é que eu não uso o Prompt direto... hehe.. eu to usando um front-end... (MySQL Query Browser)...

Vou fazer uns testes aqui... e ver o que eu recebo de volta... hauhauha....

Qualquer coisa eu dou mais uma passada aqui... hehehehe

Abraços... :P

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...