Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejecutar script gigante

Estas en el tema de Ejecutar script gigante en el foro de .NET en Foros del Web. Hola, Tengo una aplicación en c# 2.0 y trabajo con bases de datos MySQL. Tengo un script muy grande, de unos 250MB y quiero ejecutarlo ...
  #1 (permalink)  
Antiguo 30/09/2009, 07:50
 
Fecha de Ingreso: junio-2008
Mensajes: 93
Antigüedad: 15 años, 11 meses
Puntos: 1
Ejecutar script gigante

Hola,

Tengo una aplicación en c# 2.0 y trabajo con bases de datos MySQL.

Tengo un script muy grande, de unos 250MB y quiero ejecutarlo desde mi aplicación.

Yo leo el script con un objeto StreamReader y luego la cadena resultante la ejecuto como una query.

Mi problema es que al leer el streamreader me da excepción de outofmemory.

¿Como puedo separar en varias partes mi script?

Leer línea a línea el streamreader tampoco me sirve, me devuelve la misma excepción.

Muchas gracias.
  #2 (permalink)  
Antiguo 30/09/2009, 09:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ejecutar script gigante

lo que primero debes hacer es separar el encabezado del script que supongo es un mega insert con varios Values, si es así, con el stream reader separa el encabezado:

insert into x (campo1, campo n), y luego lee un lote como de 50 -100 registros (lineas) (los que te soporte el stream reader) y concatenalos con el encabezado eliminando las coma final, y así vas ejecutándolo parte por parte.

si lees el archivo de cabo a rabo el stremareder no lo soportará, pero para ejecutar el script por pedazos debes acomodarlo en sql válidas.

No olvides hacer un start transaction al principio y un commit al final para que así durante un error no tengas data corrupta

si readline te devuelve outofmemoryException es que el archivo no tiene separación de lineas (caracteres 10 y 13), tendrás que usar un buffer con el método Read e ir leyendo poco a poco

Última edición por maycolalvarez; 30/09/2009 a las 09:41
  #3 (permalink)  
Antiguo 30/09/2009, 14:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ejecutar script gigante

Cita:
Tengo un script muy grande, de unos 250MB y quiero ejecutarlo desde mi aplicación.
¿Es un script de backup?
Si es así es más sencillo invocar un proceso DOS que llame al mysql.exe y lo cargue, de la misma forma que lo harías desde línea de comandos de DOS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:15.