Importación de ficheros con filas de longitud variable.

16/02/2005 - 18:03 por Salvador Ramos | Informe spam
Hola a todos:

Tengo unos ficheros de texto cuyas filas vienen con distintas longitudes de
registro y diferentes contenidos, según los caracteres que aparezcan en el
encabezado. Os paso un ejemplo de su contenido (cada fila es mucho más
larga, incluso en ocasiones supera los 10.000 caracteres):
8A01X,07-02-0500000121EU01010132170.830134025.7600...
8A04X,07-02-0500000121EU9724301801932029 00000000...
8A06X,07-02-0500000121EU 10000819.781
8A07X,07-02-0500000121EU010000000.000000000.000035...
El contenido será distinto en función de lo que aparezca al principio
(8A01X, 8A04X, ...)

Lo primero que hago es importarlo desde texto a una tabla que sólo contiene
un campo nText, eso ya me funciona perfectamente. Ahora me falta recorrer
esa tabla y extraer la información para almacenarla en diferentes tablas,
según el formato, y ya con sus columnas correspondientes.

Estoy probando el siguiente código que se aproxima a lo que necesito:
DECLARE @ptrval varbinary(16)
DECLARE @Inicio INT
DECLARE @Fin INT
DECLARE @C INT
DECLARE @Texto VARCHAR(8000)
SET @Inicio = 1
SET @Fin = @Inicio + 123
SET @C = 1
SELECT @ptrval = TEXTPTR(Texto) FROM tmpNText
READTEXT tmpNText.Texto @ptrval @Inicio @Fin
WHILE @C <= 50 BEGIN
SELECT @ptrval = TEXTPTR(Texto) FROM tmpNText
@Fin)
READTEXT tmpNText.Texto @ptrval @Inicio @Fin
PRINT @Texto
SET @C = @C + 1
SET @Inicio = @Inicio + 24
END

Pero tengo los siguientes problemas:
- Necesito almacenar el contenido extraído con READTEXT en una variable
- El bucle no siempre es hasta 50, las filas son de longitud variable. No
veo claro cómo añadirle una condición por si hubiese menos de 50 registros
en esa fila.
- Me falta implementar un CASE en función del formato de registro para que
extraiga bien la información (eso no me preocupa una vez solucionados los
puntos anteriores.

En fin, si se os ocurre la solución a estos problemas puntuales, así como
alguna otra alternativa que veáis mejor para hacer este proceso también
sería interesante. Estoy abierto a cualquier idea. La verdad que llevo mucho
tiempo sin realizar extracciones de substrings de un campo text.

Pd. Sé que lo podría hacer, por ejemplo desde vb.net, pero lo quiero hacer
con DTS ;-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

Preguntas similare

Leer las respuestas

#1 Maxi
16/02/2005 - 22:44 | Informe spam
Hola, ufaa Salvador quieres insistir con el DTS ;)

Veamos y pensemos ;-), has probado de armar un DTS pero con VBSCRIPT? y
poner ahi las instrucciones?

otro tema, tendrias un archivo de ejemplo para poder hacer pruebas?


Salu2
Maxi


"Salvador Ramos" escribió en el
mensaje news:
Mostrar la cita
#2 Salvador Ramos
17/02/2005 - 10:40 | Informe spam
La verdad que si que lo pensé, de hecho podría hacerlo en .Net como comenté,
pero no quiero utilizar ni .net ni vbscrip ni similares, aun pareciendome
una buena solución. Mi idea es, si es posible, hacerlo con T-SQL :-)

No es por nada en especial, simplemente quiero solucionar el problema y
además tener un ejemplo que sirva como base para montar una importación de
datos secilla, y en T-SQL, partiendo de cualquier fichero de longitud
variable.

Mi idea se resume en extraer bloques de texto de un campo text o ntext y
almacenar cada bloque como una fila en un campo varchar en otra tabla.

El archivo no puedo enviarlo aquí porque los datos son confidenciales :-(

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Maxi" escribió en el mensaje
news:
Mostrar la cita
#3 Maxi
17/02/2005 - 13:13 | Informe spam
Hola, bueno dejame entonces ver como te puedo ayudar :-) voy a intentar con
esto que pasastes armar un modelito y ver hasta donde llegamos :-)


Salu2
Maxi


"Salvador Ramos" escribió en el
mensaje news:
Mostrar la cita
#4 Salvador Ramos
17/02/2005 - 13:55 | Informe spam
Muchas gracias :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Maxi" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida