Fórum Importar txt para firebird #59706

01/05/2008

0

Salve a todos,
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

F4rr3ll

Responder

Posts

02/05/2008

Edilcimar

seria melhor importar diretamente do piradox para o firebird, mas se quer direto do txt, terá que criar variáveis, ler o txt, jogar os valores nestas variáveis e depois jogar para dentro do firebird


Responder

Gostei + 0

02/05/2008

Badboysjc

Bom Dia !!

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.


Responder

Gostei + 0

03/05/2008

F4rr3ll

Edilcimar, vc tem algum exemplo de como importar do paradox direto pro firebird, pq é a primeira vez que estou fazendo este tipo de importação e não estou tendo sucesso
Grato


Responder

Gostei + 0

12/05/2008

Pattarelli

Ola,

Se ajudar eu uso o DATAPUMP do delphi para importar as tabelas parodox para meus bancos em firebird.

Espero ter ajudado.

T+


Responder

Gostei + 0

12/05/2008

Pauloroger

Crie um tabela no firebird chamada MAPEAMENTO, com os campos:

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


Responder

Gostei + 0

04/04/2009

Sluisrj

No IBEXPERT tem alguma solução para esta importação?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar