Exportar tabela MySQL para Txt

17/09/2004

Olá pessoal,

Como faço para exportar uma tabela MySQL para arquivo Texto, tendo como [b:5d0163c663]delimitador de campo o ponto-e-vírgula[/b:5d0163c663] (;), por exemplo:

Ilano;Masculino;Centec sede;Fortaleza;CE

Onde, os campos seriam, respectivamente, Nome, Sexo, Unidade, Cidade e Estado.

Grato,

Ilano.


Ilanocf

Respostas

17/09/2004

Eselvati

faca o seguinte



select listadecampos into outfile ´c:/arquivo.txt´ fields terminated by ´;´ from suatabela

note q este comando deve ser rodado no servidor, nao se preocupe com a barra ao contrario, pois é assim mesmo.




Ederson


Responder Citar

17/09/2004

Ilanocf

Seria isso:

With DMConsultas.Disciplinas Do Begin Close; SQL.Clear; SQL.Add(´TB_Disciplinas.CodigoDaDisciplina, TB_Disciplinas.CodigoDoCurso, TB_Disciplinas.NomeDaDisciplina, TB_Disciplinas.Semestre´); SQL.Add(´INTO OUTFILE ´C:\Avaliacao\Planilhas\Disciplinas.txt´ FIELDS Terminated by ´;´´); SQL.Add(´FROM TB_Disciplinas´); Open; End;



Responder Citar

20/09/2004

Ilanocf

:shock:


Responder Citar

20/09/2004

Eselvati

Este seria o comando.

Close;
SQL.Clear;
SQL.Add(´[b:8e06198115]Select[/b:8e06198115] TB_Disciplinas.CodigoDaDisciplina, TB_Disciplinas.CodigoDoCurso, TB_Disciplinas.NomeDaDisciplina, TB_Disciplinas.Semestre´);
SQL.Add(´INTO OUTFILE ´[b:8e06198115]C:/Avaliacao/Planilhas/Disciplinas.txt[/b:8e06198115]´ FIELDS Terminated by ´;´´);
SQL.Add(´FROM TB_Disciplinas´);
Open;


Responder Citar

22/09/2004

Ilanocf

Surgiu a mensagem:

Can´t create/write to file ´C:\Avaliacao\Planilhas\Disciplinas.txt´ (Errcode: 2)


Como posso resolver isto?


Responder Citar

22/09/2004

Ilanocf

Consegui fazendo assim:

With DMConsultas.Avaliacoes Do Begin Close; SQL.Clear; SQL.Add(´SELECT * FROM TB_Avaliacao´); SQL.Add(´ORDER BY CodigoDaAvaliacao´); Open; End; Lista.Lines.Clear; Lista.Lines.Add(& #39;CodigoDaAvaliacao;DataDaAvaliacao;AnoDaAvaliacao;CodigoDoCurso;CodigoDoProfe ssor;CodigoDaDisciplina;NomeDoCurso;NomeDoProfessor;NomeDaDisciplina;NomeDaUnida de;Semestre;DigitadoPor;AlteradoPor´); While not(DMConsultas.Avaliacoes.eof) do Begin Lista.Lines.Add(FormatFloat(´,,000´, DMConsultas.AvaliacoesCodigoDaAvaliacao.AsInteger) + ´;´ + DMConsultas.AvaliacoesDataDaAvaliacao.AsString + ´;´ + DMConsultas.AvaliacoesAnoDaAvaliacao.Text + ´;´ + DMConsultas.AvaliacoesCodigoDoCurso.AsString + ´;´ + DMConsultas.AvaliacoesCodigoDoProfessor.AsString + ´;´ + DMConsultas.AvaliacoesCodigoDaDisciplina.AsString + ´;´ + DMConsultas.AvaliacoesNomeDoCurso.AsString + ´;´ + DMConsultas.AvaliacoesNomeDoProfessor.AsString + ´;´ + DMConsultas.AvaliacoesNomeDaDisciplina.AsString + ´;´ + DMConsultas.AvaliacoesNomeDaUnidade.AsString + ´;´ + DMConsultas.AvaliacoesNomeDaUnidade.AsString + ´;´ + DMConsultas.AvaliacoesSemestre.AsString + ´;´ + DMConsultas.AvaliacoesDigitadoPor.AsString + ´;´ + DMConsultas.AvaliacoesAlteradoPor.AsString); DMConsultas.Avaliacoes.Next; End; Lista.Lines.SaveToFile(´C:\Avaliacao\Planilhas\Avaliações_´ + FormatDateTime(´dd´, StrToDate(DateToStr(Date))) + ´_´ + FormatDateTime(´mmm´, StrToDate(DateToStr(Date))) + ´_´ + FormatDateTime(´yyyy´, StrToDate(DateToStr(Date))) + ´.txt´);


Mas, será q não ficaria lento se forem vários registros?
Se não for pedir demais, como faria para jogar estes dados na tabela, pelo Delphi?


Responder Citar

22/09/2004

Alex Maia

Tente usar os seguintes códigos:

//Realiza manutenção no banco de dados
ShellExecute(0,nil, Pchar(´C:\bin\mysqlcheck´),PChar(´-r nome_banco ´), nil, sw_show);

//Realiza o dump das tabelas
ShellExecute(0,nil,Pchar(´C:\bin\mysqldump´),PChar(´--tab=C:\ -q -t nome_banco), nil, sw_show);

//Rotinas para importação dos dados
ShellExecute(0,nil,Pchar(´C:\bin\mysqlimport´),PChar(´-d nome_banco local_arquivo\nome_tabela.txt´), nil, sw_show);


Responder Citar

22/09/2004

Ilanocf

//Rotinas para importação dos dados ShellExecute(0,nil,Pchar(´C:\bin\mysqlimport´),PChar(´-d nome_banco local_arquivo\nome_tabela.txt´), nil, sw_show);


No caso do meu arquivo texto, os campos estão separados por [b:ab19f23427]ponto-e-vírgula[/b:ab19f23427], a rotina acima terá como importar sem problemas?

//Realiza o dump das tabelas ShellExecute(0,nil,Pchar(´C:\bin\mysqldump´),PChar(´--tab=C:\ -q -t nome_banco), nil, sw_show);


Desculpe minha ignorância, mas o q vem a ser o [b:ab19f23427]Dump[/b:ab19f23427], qual sua importância?


Responder Citar

27/09/2004

Eselvati

Amigo, a mensagem q vc recebeu quer dizer q ele nao conseguiu gravar o arquivo no local informado.

os melhores comandos do mysql para se trabalhar com textos é o select into outfile e load data infile, são extremamente velozes e fáceis de manipular.


lembre-se para executar este comando vc deve estar no servidor, na maquina onde a base do mysql está instalado, através dos clientes não é possivel, a nao ser q a opção local-infile esteja habilitada no arquivo de configuração c:\my.cnf de cada estação ai a clausula local deve estar informada no comando.


em minhas aplicações consigo importar, exportar 100000 registros mole-mole com estes comandos.

//para exportar
select * into outfile ´c:/clientes.txt´ fields terminated by ´;´ from clientes

//para importar
load data infile ´c:/clientes.txt´ into table clientes2 fields terminated by ´;´

estes comandos são supervelozes, sem comparação com qquer outro disponível.


veja mais em http://www.mysql.com e procure por load data infile e select into outfile



Ederson
Digimaq Registradoras e Sistemas Ltda.


Responder Citar