Array
(
)

Exportar tabela MySQL para Txt

Ilanocf
   - 17 set 2004

Olá pessoal,

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

Ilano;Masculino;Centec sede;Fortaleza;CE

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

Grato,

Ilano.


Eselvati
   - 17 set 2004

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


Ilanocf
   - 17 set 2004

Seria isso:


Citação:
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;



Ilanocf
   - 20 set 2004

:shock:


Eselvati
   - 20 set 2004

Este seria o comando.

Close;
SQL.Clear;
SQL.Add(´Select 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;


Ilanocf
   - 22 set 2004

Surgiu a mensagem:


Citação:

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


Como posso resolver isto?


Ilanocf
   - 22 set 2004

Consegui fazendo assim:


Citação:

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?


Alex Maia
   - 22 set 2004

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);


Ilanocf
   - 22 set 2004


Citação:

//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 ponto-e-vírgula, a rotina acima terá como importar sem problemas?


Citação:

//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 Dump, qual sua importância?


Eselvati
   - 27 set 2004

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.