Importación txt


([N2] Guille. Vecchio Orta) #1

Según el proceso que se adjunta debajo, y que se ejecuta en 3er. plano:

- ¿se puede optimizar de alguna manera a fin de ganar velocidad?
- en lugar de importar los campos por posición, ¿se puede importar por nombre de campo? Esto sería útil en el caso en que el txt no posea todas las columnas previstas o tengan un orden diferente.

Así como existe una instrucción que nos permite seleccionar un archivo, ¿existe algo similar que nos permita seleccionar, graficamente, un archivo del servidor? Em caso negativo, ¿puedo mostrar en pantalla un listado de los archivos que hay en el servidor para que el usuario seleccione? La idea sería poder elegir el archivo a importar y no tener que incrustar dicho dato en el proceso.

Gracias por adelantado,

[attachment=22759,1765]


([N1] Pepeto) #2

El proceso se ve correcto.

Mostrar la ventana con los archivos del servidor no es posible, pero:
Puedes crear un proceso para recorrer los archivos y/o carpetas y guardar la senda en una tabla, y luego mostrar los registros de la tabla en una rejilla para seleccionar, y procesar el seleccionado.

No lo he probado, pero si consigues que funcione, estaria agradecido de que mostraras el resultado.

un saludo
José Luis
http://www.ascsl.com

Edito: aqui tienes informacion para "Recorrer directorios" que la necesitaras para guardar las sendas:
http://velneo.es/info_v7_76_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proceso/comandos/comandos_de_ficheros_y_directorios/recorrer_directorio


([N2] Guille. Vecchio Orta) #3

José Luis, gracias por la información.

No he respondido antes porque tengo algunos inconvenientes con el foro.

Entiendo que, en el proceso, no hay optimización adicional que se pueda implementar.

Con respecto a navegar por el servidor, por ahora lo he descartado. El usuario seleccionará el archivo a importar desde el equipo cliente, se subirá al servidor, se importará y, una vez finalizado el proceso, se eliminará.

En cuanto a esta consulta:

- en lugar de importar los campos por posición, ¿se puede importar por nombre de campo. Esto sería útil en el caso en que el txt no posea todas las columnas previstas o tengan un orden diferente."
¿es factible de implementar?

Nuevamente gracias y saludos,


([N1] filipeagg) #4

yo en algunos casos lo tengo por nombre de campo.
Usando operaciones de cadenas, (he hecho una función para el efecto), localizas el nombre de variable a buscar, localizas donde se inicia la proxima, y devuelves el dato intermédio.

Ahora desconosco, si te mejorá el rendimiento.


([N4] velavisual) #5

@guille
.
Adjunto una imagen que te dará otra orientación :
.
1.- Sólo debes almacenar todos los registros leidos en la parte cliente en una variable local (formateado según campos)
2.- Mediante un manejador de objeto enviar la cadena a un proceso en el vserver. Allí usas la parte de parseo correspondiente y das las altas de los registros. De esta forma creas una única transacción entre cliente y servidor.
.
. Puedes controlar la longitud de la cadena local, por ejemplo para 10000 registros. Haz pruebas y observa las transacciones en el vServer.
.
saludos
Antonio Vela
http://www.velavisual.com

[attachment=22891,1768]


([N1] Pepeto) #6

Se puede hacer practicamente de todo, pero todo depende de como este organizado el archivo a importar.

¿Cuando dices que si es posible importar por nombre?, porque el TXT no posea todas las columnas previstas, que quieres decir:
1. ¿Que puede faltar un campo, en todas las lineas?
2. ¿Que unas lineas tendran todos los campos y otras no?

A la 1ª pregunta, necesitariamos al menos, que en la 1ª linea del TXT, nos informaran del nombre de cada campo en el mismo orden que apareceran en el resto de lineas.
A la 2ª pregunta, necesitariamos en cada linea del TXT el nombre del campo, junto a su contenido.

Claro que es posible en los 2 casos, pero lo mas sencillo es tener una estructura fija, y que cada campo tenga una posición dentro de la misma.

Un saludo
José Luis
http://www.ascsl.com