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

(Resolvido) IBSQL1 - Exportar / Importar dados tabela


pimpocvl007

Pergunta

Boa noite,

Utilizei o código abaixo para EXPORTAR os dados da minha tabela, funcionou perfeitamente. O problema esta no código de importação que da este erro:

[E-R-R-O]

Project 1

Dynamic SQL Error

SQL error code = -303

conversion error from string "1"

[E-X-P-O-R-T-A-R]

var

Delimitador: TIBOutputDelimitedFile;

begin

IBSQL1.SQL.Text := 'select CUST_NO, CUSTOMER, CITY from CUSTOMER';

Delimitador := TIBOutputDelimitedFile.Create;

try

Delimitador.Filename := 'C:\export_delim.exp';

IBSQL1.BatchOutput(Delimitador);

finally

Delimitador.Free;

end;

ShowMessage('Exportação realizada com sucesso');

end;

[i-M-P-O-R-T-A-R]

var

Delimitador: TIBInputDelimitedFile;

begin

IBSQL1.SQL.Text := 'insert into CUSTOMER values (:CUST_NO, :CUSTOMER, :CITY)';

Delimitador := TIBInputDelimitedFile.Create;

try

Delimitador.Filename := Edit1.Text;

IBSQL1.BatchInput(Delimitador);

finally

Delimitador.Free;

end;

ShowMessage('Importação realizada com sucesso');

end;

obs.: http://www.devmedia.com.br/post-2040-Expor...do-fb---ib.html

Como resolver?

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

8 respostass a esta questão

Posts Recomendados

  • 0

Dynamic SQL Error

SQL error code = -303

conversion error from string "1"

erro de conversão para string "1"

OBS: supondo que o seu campo CUST_NO seja do tipo inteiro, voce deverá fazer a conversão da string "1" que é um caracter para um valor inteiro.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Já que voce esta seguindo o exemplo do link:

Aqui vale uma dica muito importante: para que a importação ocorra perfeitamente, os campos de destino têm que ter o mesmo nome, tipo de dados e ordem na tabela, caso contrário ocorrerá erros ao inserir os dados.

Dynamic SQL Error

SQL error code = -303

conversion error from string "1"

reveja a definição de tipo de dados na sua tabela, e não precisará fazer nenhuma conversão

exemplo de uma conversão de tipo

var num : string; num1 : integer

num := '1';

num1 := num;  // aqui ocorrerá erro de conversão

num1 := strtoint(num); // aqui está correta a conversão de tipo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

var num : string; num1 : integer

num := '1';

num1 := num;  // aqui ocorrerá erro de conversão

num1 := strtoint(num); // aqui está correta a conversão de tipo

...então Jhonas, para testar eu criei uma tabela simples que recebera a importação, (tabela = teste, sendo os campos: "cd_cliente = integer" e "nm_cliente = string(60)"), os dados que exportei de outra tabela seguem este mesmo raciocínio, inclusive o nome e tipo, mesmo assim deu erro. Este exemplo de conversão que você deu já e familiar para mim, mas no caso dentro de um SQL não, você quer dizer que eu terei que utilizar variáveis dentro do SQL para representar os campos? isso?

obs.: naquele primeiro link que postei tem um "programinha" de exemplo para baixar, testei com ele e também da erro.

Obrigado

Olimpio

Link para o comentário
Compartilhar em outros sites

  • 0

exemplo na instrução sql:

INSERT INTO Customer 

  (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState,  CustZip, CustBal)

VALUES ("9999999", 'John', 'Avitabile', '432 Western', 'Albany', 'NY',  '80217-0211', 500)
OBS: foi utilizado aspas duplas no valor, o que causara erro
INSERT INTO Customer 

  (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState,  CustZip, CustBal)

VALUES ('9999999', 'John', 'Avitabile', '432 Western', 'Albany', 'NY',  '80217-0211')
OBS: a maneira correta é usar aspas simples outra maneira seria fazer a conversão como no exemplo do post anterior, se voce estiver usando variaveis com passagem de parametros.
INSERT INTO Customer 

  (CustNo, CustFirstName, CustLastName, CustStreet, CustCity, CustState,  CustZip)

VALUES (:Num, :Nome, :Sobre_nome, :Rua, :Cidade, :Estado, :CEP)

Então antes de processar a instrução voce faz a conversão do tipo

outro exemplo se uso:

http://files.edin.dk/php/win32/dev/php_bui...les/o8idemo.sql

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

...sabe, ainda não consegui resolver este problema. Fiquei impressionado quando descobri este componente IBSQL1 que exportou todos os dados sem eu precisar ficar fazendo muitas configurações, ai no exemplo também constava a importação, essa sim, deu dor de cabeça, eu imaginava que seria algo como fez com a exportação ou seja, era só entrar com um sql simples executar ali e pronto, ele (IBSQL1) importaria da mesma forma magica os dados para a tabela. Pelo que estou percebendo eu tenho que desenvolver um processo que lê linha por linha do arquivo e importa na tabela, isso?

[este código não da erro mas também não importa nada]

procedure TfrmPESPR001.btImportarClick(Sender: TObject);

var

Input: TIBInputRawFile;

begin

IBSQL1.SQL.Text := 'insert into TESTE values (:CD_PESSOA, :NM_PESSOA)';

Input := TIBInputRawFile.Create;

try

Input.Filename := ExtractFilePath(Application.ExeName)+'\backups\CadastroPerfilPessoa.exp';

IBSQL1.BatchInput(Input);

finally

Input.Free;

end;

ShowMessage('Importação realizada com sucesso');

end;

Att.

Olimpio

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

  • 0

exemplo:

unit UIBSQL;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, IBDatabase, IBCustomDataSet, IBQuery, IBSQL,
  IBUpdateSQL, DBClient, DBLocal, DBLocalI, ExtCtrls, DBCtrls, StdCtrls,
  IBTable, IBDatabaseInfo;

type
  TFIBSQL = class(TForm)
    IBSQL1: TIBSQL;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    IBSQL2: TIBSQL;
    Button1: TButton;
    IBTable1: TIBTable;
    IBTable2: TIBTable;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FIBSQL: TFIBSQL;

implementation

{$R *.dfm}

procedure TFIBSQL.Button1Click(Sender: TObject);
var
  Filename : String;
  RawOutput : TIBOutputRawFile;
  RawInput : TIBInputRawFile;
begin
  IBSQL1.Sql.Text := 'Select country, currency from country';
  IBSQL2.Sql.Text := 'Insert into Newcountry (country, currency) values(:first,:second)';
  Filename := 'd:\DataFile.RAW';
  
  //?COUNTRY???????? d:\DataFile.RAW ???
  RawOutput:= TIBOutputRawFile.Create;
  try
    RawOutput.FileName := FileName;
    IBSQL1.BatchOutput(RawOutput);
  finally
    RawOutput.Free;
  end;

  //?d:\DataFile.RAW ?????????NEWCOUNTRY??
  RawInput := TIBInputRawFile.Create;
  try
    RawInput.FileName := FileName;
    IBSQL2.BatchInput(RawInput);
    IBTable2.Close;
    IBTable2.Open;
  finally
    RawInput.Free;
  end;

  //????
  IBSQL2.Transaction.CommitRetaining;
end;


procedure TFIBSQL.FormCreate(Sender: TObject);
begin
 IBTable1.Open;
 IBTable2.Open;
end;

end.

caso ainda tenha duvidas, veja:

http://www.sqlmagazine.com.br/Colunistas/L..._exportacao.asp

http://qc.embarcadero.com/wc/qcmain.aspx?d=93446

Manual Interbase

http://www.gvsnet.nl/Interbase/v80/DevGuide.pdf

OBS: procure entender o funcionamento do código

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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