Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Migración Archivos Planos a MySQL - Velocidad (https://www.clubdelphi.com/foros/showthread.php?t=29319)

samantha jones 18-01-2006 23:52:00

Migración Archivos Planos a MySQL - Velocidad
 
Hola a todos

Tengo que migrar unas tablas hechas en TopSpeed (los archivos de Clarion *.tps), el hecho es que al hacerlo va muy lento, lo hago de la siguiente forma: Abro una consulta de una o varias tablas de Clarion, recorro dicha consulta, valido los datos obtenidos y si es necesario los corrijo o los formateo a la nueva estructura, inserto un registro en MySQL con los datos ya formateados, y asi sucesivamente.

La Consulta de Clarion me regresa cerca de 500,000 registros y conforme avanza el procedimiento se va volviendo mas lento, mi pregunta es: se deberá tal lentitud por el numero de registros de la consulta y que conforme va avanzando el procedimiento carga otra pagina de datos a memoria?, Existe otra forma mejor de hacerlo que no implique en limitar la consulta?.

Uso Delphi 2006 y ADO (me conecto tanto a Clarion como a MySQL por ODBC)

Saludos y Gracias

roman 18-01-2006 23:57:14

¿Clarion no te permite exportar datos a algún formato de texto? Digo, porque MySql tiene la sentencia LOAD que inserta registros muy rápido.

Otra cosa, recuerda que el INSERT de MySql acepta múltiples registros en una sóla sentencia, lo cual es mucho más rápido que mútliples INSERT. Quizá si en lugar de lanzar un INSERT conforme recorres la consulta, lo vas poniendo en memoria (aunque esto puede ser mucho, no lo sé) y con todos los datos formas un sólo INSERT, sea más rápido.

// Saludos

samantha jones 19-01-2006 01:00:38

Cita:

Empezado por roman
¿Clarion no te permite exportar datos a algún formato de texto? Digo, porque MySql tiene la sentencia LOAD que inserta registros muy rápido.

pero además debo de reajustar los datos a la nueva estructura es decir algunos valores cambian por decir si estatus = 'C' estatusMySQL = 'CAN', y cosas por el estilo. Y no tengo Clarion solo el ODBC.

Cita:

Empezado por roman
Otra cosa, recuerda que el INSERT de MySql acepta múltiples registros en una sóla sentencia, lo cual es mucho más rápido que mútliples INSERT. Quizá si en lugar de lanzar un INSERT conforme recorres la consulta, lo vas poniendo en memoria (aunque esto puede ser mucho, no lo sé) y con todos los datos formas un sólo INSERT, sea más rápido.
// Saludos

esto lo voy a probar. Saludos y Gracias.

roman 19-01-2006 01:25:11

También recuerda que con ODBC siempre será un poco más lento que usando controles nativos. Aunque con Clarion no te quede otra opción, con MySql tienes por lo menos ZEOS (gratuitas) y MyDac (no muy caras). En pocos registros quizá no haya mucha diferencia, pero pienso con quinientos mil, la situación cambia.

Ahora, aún cuando debes modificar los datos que provienen de Clarion, eso no quita que puedas generar un archivo de texto con los datos ya modificados y luego usar LOAD DATA INFILE en MySql. Esto último es aún más rápido que INSERT de múltiples registros.

Otra cosa, conviene quitar cualquier índice que tengas en las tablas destino al momento de exportar los datos, ya que el servidor requerirá menos trabajo al no tener que actualizarlos.

// Saludos


La franja horaria es GMT +2. Ahora son las 12:34:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi