Carga de datos desde un archivo .unl

Estoy escribiendo un sp para cargar datos en varias tablas desde archivos planos. Lo primero que se me ocurrió fue copiar las instrucciones que usa informix para descargar datos desde archivos .unl cuando genera dbexport, o sea:

{ TABLE “dba”.sga_sedes row size = 440 number of columns = 12 index size = 27 }
{ unload file name = sga_s00760.unl number of rows = 1 }

de esto tomo el formato, cambio algunos nombres. Una de las tablas que tengo que crear y cargar es exactamente igual a sga_sedes, el sp queda:

CREATE PROCEDURE sui_MaDeZAS (
)
BEGIN
drop table “dba”.mdz_sedes;

{ TABLE “dba”.mdz_sedes row size = 440 number of columns = 12 index size = 27 }
{ unload file name = mdz_sedes.unl number of rows = 1 }

create table “dba”.mdz_sedes
(
sede varchar(5) not null ,
nombre varchar(255) not null ,
calle varchar(50),
numero varchar(5),
piso varchar(3),
departamento varchar(5),
unidad varchar(3),
localidad integer,
codigo_postal varchar(15),
telefono char(18),
fax char(18),
email varchar(50)
);

END;
END PROCEDURE;

Lo doy de alta y lo ejecuto, no hay errores. Como resultado está la tabla mdz_sedes sin datos.
mdz_sedes.unl es una copia de sga_s00760.unl que genera, en la importación, la tabla sga_sedes.
Probé grabar mdz_sedes.unl en varias carpetas y nada.

Alguna sugerencia?

Gracias

Hola

Lo que está entre llaves {} son comentarios, por lo tanto no se ejecuta.
Probastes
insert into
load from ‘archivo’ delimiter ‘…’

Emilio

Hola

Efectuvamente, lo que esta entre { } es un comentario, con lo cual el stored procedure que hiciste solo crea la tabla, no la carga.

Desde donde vas a llamar al stored procedure ? Es necesario que la carga se haga desde un stored procedure ?, no podes hacerla desde un sql o desde un .bat ?

saludos

Esa sintaxis en un sql solo es interpretada bien por el dbimport, que está hecho para interpretarla. En un SP o un script SQL son comentarios como ya te dijeron

Tenes que usar el comando load, y el archivo de datos no es obligación que sea un archivo .unl.

Saludos

Gustavo

Usé

INSERT INTO mdz_sedes
LOAD FROM ‘mdz_sedes.txt’ delimiter ‘|’;

y

INSERT INTO mdz_sedes
LOAD FROM ‘C:\informix\mdz_sedes.txt’ delimiter ‘|’;

y da error de sintaxis en la palabra LOAD.

Corrí las instrucciones de creación y carga de la tabla fuera del sp, igual da error.

Hola

será al reves?
load from
insert into

Emilio

Sí, Emilio, era al revés, pero no funciona dentro del sp.
Con esto ya puedo avanzar con el resto.

Muchísimas gracias a todos.

lo que pasa es que al sp lo ejecuta el servidor y entonces el path del archivo tiene que ser relativo al sevidor.

Emilio