Recorrer Tabla SQL

07/04/2005 - 01:32 por Mike | Informe spam
Hola a todos.
Quiero saber si existe otra Forma de Recorrer una Tabla
SQL que tiene como 17 MIllones de Registros, la cual se
Recorre y linea a linea se llenan sus Datos a Otras 2
Tablas (Ya que están en Codigos que tienen diferentes
significados).
Estoy usando un DECLARE CURSOR-OPEN CURSOR,etc.
Pero el proceso me lleva como 7 u 8 horas.
Quiero saber si puedo mejorar esto o que otra forma puedo
usar.

Preguntas similare

Leer las respuestas

#6 Liliana Sorrentino
27/04/2005 - 13:37 | Informe spam
Hola Mike,
Te mando algo muy simple para que adaptes a tu necesidad.
Saludos, Liliana.

CREATE TABLE #Origen (dato char(10))
INSERT #Origen SELECT '1abcdef'
INSERT #Origen SELECT '2345678'
INSERT #Origen SELECT '2465464'
INSERT #Origen SELECT '2458778'

CREATE TABLE #DestinoAlfa (dato1 char(2), dato2 char(4))
CREATE TABLE #DestinoNum (dato1 dec(3), dato2 dec(3))

INSERT #DestinoAlfa
SELECT SUBSTRING (dato, 2, 2), SUBSTRING (dato, 4, 4)
FROM #Origen
WHERE SUBSTRING (dato, 1, 1) = '1'

INSERT #DestinoNum
SELECT SUBSTRING (dato, 2, 3), SUBSTRING (dato, 5, 3)
FROM #Origen
WHERE SUBSTRING (dato, 1, 1) = '2'

SELECT * FROM #DestinoAlfa

SELECT * FROM #DestinoNum



"Mike" escribió en el mensaje
news:0b7b01c53b79$085f92d0$
Caso de RECORRER TABLA SQL.



Tengo una Tabla Principal que es la que Recorro, y dos
Tablas Secundarias una de Datos de Identidad y otra de
Saldos que lleno.



Este es una parte del Contenido de la Tabla Principal TP
que tiene un Solo Campo . Este se refiere a un Solo
Cliente



1E000428886620030430 120092920 1
0020344000000000000000006560NU#EZ PORRAS JOSE MARIA

2E0004288866001073141103060000000000000000004859340

2E0004288866001073841402290000000000000000004941900

2E0004288866001413142503060000007030000000009268704

2E0004288866001413142903010000000000000000009268704

2E0004288866001413812401000000000000000000001343154

2E0004288866001413842402090000000000000000007616404



Asi como este existen datos o lineas alrededor de 17
Millones,



Lo que Hago es usar un Proc Alm. En el que usao el
Declare Cursor , etc.



Por ejemplo , si la Cadena empieza con '1' son datos
para la Tabla Secundaria TS1 y si comienza con '2' para
la

Tabla Secundaria TS2.

El Nombre lo saco usando SUBSTRING, igual saco las
Cuentas Contables , su Codigo de Doc de Identidad, Nro de
Documento de Identidad,

Saldos, dias de atraso, Porcentajes de Calificación de
Riesgo.,etc



Es decir tomo cada Linea y tengo que desagregar datos y
enviarlos Bien a la Tabla Secundaria 1 o 2.



Ese es en Resumen el Problema.



Espero tu Amable ayuda o sugerencias


Mike,

Te recomiendo que postees la definicion de la tabla, asi


como algunos datos
de ejemplo y el resultado esperado. De esa forma


tendremos una mejor idea de
lo que se tiene y lo a donde se desea llegar.


AMB

"mike" wrote:

Gracias Por Tu Respuesta Maxi.
en Cada linea o Registro de la Tabla Principal o




Fuente.
Existen Datos en Codigos cada uno de los Cuales segun




su
Valor puede Tener diferentes Significados. Tambien




puede
haber una Cadena con Los Apellidos y Nombres seguidos




por
lo que debemos usar SUBSTRING, y asi de toda la




Cadena,
se extrae informacion que luego de "procesada" va bien




a
la Tabla Secundaria 1 o Tabla Secundaria 2.

Espero su amable ayuda
>Hola Mike, claro que puedes, es mas usar cursores es




una
muy mala idea en
>sqlserver y viene muy bien tu comentario :-)
>
>Deberiamos saber que hace ese proceso y como son las
tablas, pero seguro que
>sacaremos el cursor y la operacion solo durara




algunos
minutos quizas!! :-)
>
>
>
>Maxi
>Buenos Aires - Argentina
>Desarrollador .NET 3 Estrellas
>Microsoft User Group (MUG)
>
>
>
>"Mike" escribió en el mensaje
>news:089501c53b00$d8c1b760$
>Hola a todos.
>Quiero saber si existe otra Forma de Recorrer una




Tabla
>SQL que tiene como 17 MIllones de Registros, la cual




se
>Recorre y linea a linea se llenan sus Datos a Otras 2
>Tablas (Ya que està¡n en Codigos que tienen diferentes
>significados).
>Estoy usando un DECLARE CURSOR-OPEN CURSOR,etc.
>Pero el proceso me lleva como 7 u 8 horas.
>Quiero saber si puedo mejorar esto o que otra forma




puedo
>usar.
>
>
>
>
>
>.
>



.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida