RECORRER TABLA SQL

07/04/2005 - 18:50 por MIKE | Informe spam
Caso de RECORRER TABLA SQL.
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.



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 TORRAS JOSE MARIO

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

Preguntas similare

Leer las respuestas

#6 sebastian_rgs
20/04/2005 - 16:39 | Informe spam
Hola MIKE
Quiza te llegué tarde mi respuesta, pero recién acabo de leer tu consulta.
Te adjunto una solución alternativa (basado en los datos de tu store
procedure).
Espero te sirva de ayuda.

Saludos

INSERT INTO RCCMAE808
SELECT '1' IDENTIDAD,
SUBSTRING(CCADPRI,2,10) CCODSBS,
SUBSTRING(CCADPRI,12,8) CFECMES,
SUBSTRING(CCADPRI,20,1) CTIDOTR,
SUBSTRING(CCADPRI,21,11) CNODOTR,
SUBSTRING(CCADPRI,32,1) CTIDOCI,
SUBSTRING(CCADPRI,33,12) CNUDOCI,
SUBSTRING(CCADPRI,45,1) CTIPPER,
SUBSTRING(CCADPRI,46,1) CTIPEMP,
CAST(SUBSTRING(CCADPRI,47,3) AS TINYINT) NCANENT,
ROUND(CAST(SUBSTRING (CCADPRI,50,5) AS NUMERIC(7,2))/100,2) NPORCAL0,
ROUND(CAST(SUBSTRING (CCADPRI,55,5) AS NUMERIC(7,2))/100,2)
NPORCAL1,
ROUND(CAST(SUBSTRING (CCADPRI,60,5) AS NUMERIC(7,2))/100,2) NPORCAL2,
ROUND(CAST(SUBSTRING (CCADPRI,65,5) AS NUMERIC(7,2))/100,2) NPORCAL3,
ROUND(CAST(SUBSTRING (CCADPRI,70,5) AS NUMERIC(7,2))/100,2)
NPORCAL4,
SUBSTRING(CCADPRI,75,120) CAPEPAT,
SUBSTRING(CCADPRI,195,40) CAPEMAT,
SUBSTRING(CCADPRI,235,40) CAPECAS,
SUBSTRING(CCADPRI,275,40) CPRINOM,
SUBSTRING(CCADPRI,315,40) CSEGNOM,
CASE WHEN ROUND(CAST(SUBSTRING (@CCADPRI,70,5) AS NUMERIC(7,2))/100,2)
20 THEN '4'


WHEN ROUND(CAST(SUBSTRING (@CCADPRI,65,5) AS NUMERIC(7,2))/100,2) >
20 THEN '3'
WHEN ROUND(CAST(SUBSTRING (@CCADPRI,60,5) AS NUMERIC(7,2))/100,2) >
20 THEN '2'
WHEN ROUND(CAST(SUBSTRING (@CCADPRI,55,5) AS NUMERIC(7,2))/100,2) >
20 THEN '1'
WHEN ROUND(CAST(SUBSTRING (@CCADPRI,50,5) AS NUMERIC(7,2))/100,2) >
20 THEN '0'
END LM21
FROM URIRCCTOT808
WHERE LEFT(CCADPRI,1) = '1'

INSERT INTO RCCSAL808
SELECT '2' SALDOS,
SUBSTRING(CCADPRI,2,10) CCODSBS,
SUBSTRING(CCADPRI,12,5) CCODEMP,
SUBSTRING(CCADPRI,17,1) CTIPCRE,
SUBSTRING(CCADPRI,18,14) CCTACON,
CAST(SUBSTRING(CCADPRI,32,4) AS INT) NDIAATR,
ROUND(CAST(SUBSTRING(CCADPRI,36,15) AS NUMERIC(15,2))/100,2)
NSALDOS,
SUBSTRING(CCADPRI,51,1) CCALRIE
FROM URIRCCTOT808
WHERE LEFT(CCADPRI,1) = '2'
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida