PDA

Ver la Versión Completa : importacion de datos a DB


uper
14-04-2005, 19:32:54
hola a todos,

en algun link, obtuve como importar datos (desde un archivo txt) yo lo comprobe pero tiene unos problemillas al hacerlo, por que cuando son numeros enteros me importa unos numeros en miles, etc, este es el fragmento que fui modificando:

create table tablaEx external file 'C:\Mis documentos\Documentos\prov.txt'
(
clave integer,
Nombre varchar(50),
telefono varchar(25),
clasif varchar(4),
saldo double precision,
retorno char(2) ------> asi lo indicaron
);
donde n = 2 en windows y n = 1 en linux donde se coloca el numero (n).

busque el Ibexpet edition personal, ya registre la base y tengo un archivo en excel y de este hice una copia para guardarlo como tipo CVS preguntandome que si deseaba conservar los caracteres de compatibilidad, [Si].
en las ayudas esta como importarlo:
INSERTEX INTO provs(clave,proveedor,tel,cat,saldo) FROM CSV 'C:\Mis documentos\Documentos\proves.csv' DELIMITER ';' SKIP 1;
alguien ha importado datos y me pueda indicar como hacerlo.
les agradesco mucho

lgarcia
14-04-2005, 20:33:27
Hola

Dado que ya tienes los datos en Excel me parece que es mas facil importarlos directamente del xls que del cvs ahi te envio un codigo que te puede ayudar

procedure TFormMenu.Productos2Click(Sender: TObject);
var
j: Integer;
begin
try
Excel := CreateOleObject('Excel.Application');
except
Excel.Quit;
showmessage('No se pudo crear el Objecto Excel.');
raise;
end;
if OpenDialogXls.Execute then Archivo:= OpenDialogXls.FileName
else exit;
Excel.Workbooks.Open(Archivo);
j:= 2;
try
repeat
with InsertarProductos do
begin
Close;
Parameters.ParamByName('@codplu').Value:= Excel.Cells[j,1].Value;
Parameters.ParamByName('@codtrasval').Value:= Excel.Cells[j,2].Value;
Parameters.ParamByName('@codfabricante').Value:= Excel.Cells[j,3].Value;
Parameters.ParamByName('@descripcionplu').Value:= Excel.Cells[j,4].Value;
Parameters.ParamByName('@preciocosto').Value:= Excel.Cells[j,5].Value;
Parameters.ParamByName('@precioventa').Value:= Excel.Cells[j,6].Value;
Parameters.ParamByName('@um').Value:= Excel.Cells[j,7].Value;
Parameters.ParamByName('@categoria').Value:= Excel.Cells[j,8].Value;
Prepared:= True;
ExecProc;
end;
inc(j);
until Excel.Cells[j,2].Value = '';
Excel.quit;
ShowMessage(' El fichero de productos ha sido importado exitosamente');
except
ShowMessage(' !!!!! ATENCION !!!!! ' + chr(13) +
' El fichero no pudo ser importado' + chr(13) +
' Revise bien su estructura');
end;
end;

Donde Excel : Variant;

y en el uses incluir Excel97, ComObj

El ejemplo comienza en j:= 2 por que tengo encabezada la primera fila del documento.

Espero que te sea util

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

uper
15-04-2005, 23:41:06
saludos

mi duda es que para importar datos seria conveniente hacerlo por un store procedure, para que se ejecute desde la aplicacion una vez que cargemos el archivo en excel.

mi SP es el siguiente, pero me dice que hay un error en la linea 9 char 10 insert

CREATE PROCEDURE INSERTAR_PROV (CLAVE_PROV Integer,
PROVE Varchar(50),
"TEL_PROV " Varchar(15),
CAT Varchar(4),
" SALDO_PROV" Double precision)
AS
begin
FOR SELECT(Insert into provs(clave, proveedor, tel, cat, saldo)
values(:CLAVE_PROV, :PROVE, :CAT, :SALDO_PROV) from Provs
suspend;
end

me pueden indicar como es la correcta insercion en este sp

gracias