Fórum Importar txt para firebird #59706
01/05/2008
0
Tenho um sistema em firebird e estou instalando em um cliente que ja tinha um em paradox, bom até blz.
exportei o paradox para txt, agora estou tentando importar para firebird mais não estou tendo sucesso,
Alguem tendo um script que importe ou alguma ideia pra me socorrer
no aguardo
Abraço a todos
F4rr3ll
Curtir tópico
+ 0Posts
02/05/2008
Edilcimar
Gostei + 0
02/05/2008
Badboysjc
Verifique se tem como exportar os dados em formato CSV, se tiver, me avise que uso um programa simples que se chama CSTTOIB, ele aceita tanto FIREBIRD quanto INTERBASE, á única coisa é que para migrar os campos da tabela origem e destino tem que ser igual.
Abraços.
Gostei + 0
03/05/2008
F4rr3ll
Grato
Gostei + 0
12/05/2008
Pattarelli
Se ajudar eu uso o DATAPUMP do delphi para importar as tabelas parodox para meus bancos em firebird.
Espero ter ajudado.
T+
Gostei + 0
12/05/2008
Pauloroger
CAMPO: VARCHAR(20)
POSI: INTEGER
TAMANHO: INTEGER
TIPO: VARCHAR(1)
Coloque alguns dados conforme seu mapeamento, o meu esta assim:
DATA_CADASTRO, 1, 8, D
CENTRODECUSTO, 9, 4, A
NUMREQ, 14, 6, A
REQUISICAO, 24, 34, A
VALOR, 46, 20, M
Onde D é Data, A é alfanumerico e M é Moeda, ok
unit DataSetTxt;
interface
uses
Classes, DB, SysUtils;
procedure TxtToDataSet( Arquivo, Log : TStrings; Destino, Map: TDataSet);
procedure TextToField(Text : string; Field: TField; Tipo : char);
procedure DataSetToTxt (Arquivo : TStrings; DataSet, Map: TDataSet);
function FieldToText(Field: TField; Tam : Integer; Tipo : Char) : String;
implementation
procedure TxtToDataSet(Arquivo, Log: TStrings; Destino, Map: TDataSet);
var
i : integer;
Campo : string;
begin
(* varre o arquivo texto *)
for i := 0 to Arquivo.Count - 1 do
begin
Destino.Append;
(* para todos os campos a serem mapeados *)
try
Map.First;
while not Map.Eof do
begin
(* extrai campo conforme especificações de mapeamento *)
Campo := copy(Arquivo[i],
Map.FieldByName(´POSI´).AsInteger,
Map.FieldByName(´TAM´).AsInteger);
(* mapeia campo texto para TField *)
TextToField(Campo, Destino.FieldByName
(Map.FieldByName(´CAMPO´).AsString),
Map.FieldByName(´TIPO´).AsString[1]);
Map.Next;
end;
Destino.Post
except
on E : Exception do //trata exceção e não propaga
begin
if Log <> nil then
Log.Add(format(´Erro na linha ¬d : ¬s´,[i, E.Message]));
Destino.Cancel;
end;
end;
end;
end;
procedure textToField (text : string; Field : TField; Tipo : char);
var
dia, mes, ano : Word;
begin
case tipo of
´M´ : Field.AsCurrency := StrToCurr(text)/100;
´D´ :
begin
dia := StrToInt(copy(Text,1,2));
mes := strToInt(copy(Text,3,2));
ano := 1900 + StrToInt(copy(Text, 5, 2));
Field.AsDateTime := EncodeDate(ano,mes,dia);
end;
´A´, ´N´ : Field.AsString := Text;
end;
end;
procedure DataSetToTxt(Arquivo : TStrings; DataSet, Map : TDataSet);
var
linha : string;
begin
(*Varre o DataSet a ser exportado *)
DataSet.First;
while not DataSet.Eof do
begin
Map.first;
while not Map.Eof do
begin
linha := linha + FieldToText(DataSet.FieldByName(
Map.FieldByName(´CAMPO´).AsString),
Map.FieldByName(´TAM´).AsInteger,
Map.FieldByName(´TIPO´).AsString[1]);
Map.Next;
end;
Arquivo.Add(linha);
linha := ´´;
DataSet.Next;
end;
end;
function FieldToText(Field: TField; Tam: integer; Tipo: char): string;
var
fmt : string;
begin
Case Tipo of
´A´ :
begin
(* Formata string com espaços a direita *)
fmt := Format(´-¬d.¬ds´, [Tam,Tam]);
result := Format(´¬´ + fmt,[Field.AsString]);
end;
´N´ :
begin
(* Formata inteiro com zeros a esquerda *)
fmt := Format(´¬d.¬dd´, [Tam,Tam]);
result := Format(´¬´ + fmt,[Field.AsInteger]);
end;
´M´ :
begin
(* Formata moeda com zeros a esquerda *)
fmt := Format(´¬d.¬dd´, [Tam,Tam]);
result := Format(´¬´ + fmt,[round(Field.AsCurrency*100)]);
end;
(* Formata data como ddmmyyyy *)
´D´ : result := FormatDateTime(´ddmmyyyy´, Field.AsDateTime);
end;
end;
Crie um botão Importar, ao clicar nele:
var
txt : TStrings;
begin
//Rottina para Importação
if OpenDialog1.Execute then
begin
txt := TStringList.Create;
try
txt.LoadFromFile(OpenDialog1.FileName);
if txt.Count = 0 then
raise Exception.Create(´Arquivo vazio !!!´);
TxtToDataSet( txt, nil, DM.CDS_DadosExportacao, DM.CDS_Cadastro);
finally
txt.Free;
end;
end;
end;
Botão exportar
var
txt : TStrings;
begin
if SaveDialog1.Execute then
begin
txt := TStringList.Create;
try
DatasetToTxt(txt, DM.CDS_DadosExportacao, DM.SDS_Mapeamento);
txt.SaveToFile(SaveDialog1.FileName);
StatusBar1.SimpleText :=
Format(´Arquivos ¬s - Registros exportados : ¬d´, [SaveDialog1.FileName, txt.Count]);
finally
txt.Free;
end;
end;
Beleza, qualquer coisa estamos ai. Abraços
Gostei + 0
04/04/2009
Sluisrj
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)