MySQL - agregar multiples datos a tabla con datos

 
Vista:
sin imagen de perfil

agregar multiples datos a tabla con datos

Publicado por sabe (8 intervenciones) el 16/01/2014 18:19:49
buenos dias.

tengo una tabla con la siguiente estructura

1
2
3
4
5
| codigo | prim | segu |  primos |
+--------+------+------+---------+
|      1 |    1 |    2 |    NULL |
|      2 |    3 |    4 |    NULL |
|      3 |    5 |    6 |    NULL |

y quiero agregar datos a la columna primos para que quede

1
2
3
4
5
| codigo | prim | segu |  primos |
+--------+------+------+---------+
|      1 |    1 |    2 |       1 |
|      2 |    3 |    4 |       1 |
|      3 |    5 |    6 |       1 |

la columna primos es de numeros primos, es decir, muestra cuantos numeros primos tiene la columna prim y segu.

esta tabla tiene mas de 1000 registros y agregar los registros de primos uno a uno es un trabajo muy largo.

tengo un txt que tiene la lista con la cantidad de numeros primos de cada registro prim y segu.

como hago un LOAD DATA para cargar ese txt y actualice esa columna.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

agregar multiples datos a tabla con datos

Publicado por xve (1151 intervenciones) el 16/01/2014 20:59:42
Hola Sabe, hasta donde yo se LOAD DATA únicamente te añade registros a la tabla, no te hace una actualización de los registros.

Que formato tiene el archivo de texto?
La manera que se me ocurre, es utilizar cualquier lenguaje de programación para que recorra el archivo y actualice cada uno de los registros.

Si nos puedes comentar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

agregar multiples datos a tabla con datos

Publicado por sabe (8 intervenciones) el 16/01/2014 21:31:44
Hola xve, gracias por tu respuesta.
El archivo que tiene los datos para actualizar la base de datos es un txt.
y los tiene ordenados de arriba hacia abajo:

2
3
5
2
3
etc.

estuve pensando un script con python para actualizarla como vos me recomendas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

agregar multiples datos a tabla con datos

Publicado por xve (1151 intervenciones) el 16/01/2014 21:47:22
Te funcionara perfectamente... Python es un muy buen lenguaje de programación... si tienes cualquier duda, en el foro de Python intentare ayudarte!!!

Si lo consigues, estaria bien que publicaras tu código, para que otros usuarios puedan aprender y utilizarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

agregar multiples datos a tabla con datos

Publicado por sabe (8 intervenciones) el 17/01/2014 15:35:32
ya esta, anduvo el script con python
gracias por el aporte .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

agregar multiples datos a tabla con datos

Publicado por xve (1151 intervenciones) el 17/01/2014 15:50:23
Perfecto Sabe... nos puedes mostrar el script?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

agregar multiples datos a tabla con datos

Publicado por sabe (8 intervenciones) el 21/01/2014 18:20:32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- coding: utf-8 -*-
import MySQLdb
import string
 
 
archivo=open('/xxxxx/yyyyy/primos.txt','r')
lista = archivo.readlines()
 
codigo = 0
 
for dato in lista:
	primo = int(dato)
 
	codigo += 1
 
	print codigo
 
	bd = MySQLdb.connect("localhost","usuario","contaseña","nombre_de_la_base_de_datos")
 
	# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos
	cursor = bd.cursor()
	sql = "UPDATE colum SET primos=%d WHERE codigo=%d" % (primo, codigo)
	try:
		# Ejecutamos un query SQL usando el método execute() que nos proporciona el cursor
		cursor.execute(sql)
		# Efectuamos los cambios en la base de datos
 
		bd.commit()
 
	except:
		# Si se genero algún error revertamos la operación
 
		bd.rollback()
		# Nos desconectamos de la base de datos
 
 
	if codigo ==9000000 :
		break
 
 
 
 
 
bd.close()
archivo.close()



NOMAS QUE COMO YA VES, TENGO QUE PASAR 9.000.000 DE DATOS Y ES MUY LENTO.

ALGUNA FORMA DE ACELERAR ESO?

DESPUES DE 7 HORAS SIGUE PASANDO DATOS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

agregar multiples datos a tabla con datos

Publicado por xve (1151 intervenciones) el 21/01/2014 20:39:48
Gracias por compartirlo Sabe!!!

Sobre el tema de la velocidad, lo que yo haria seria poner un indice en el campo codigo (si ya no lo tienes) y pasar mi base de datos a MyISAM si es posible. Si utilizas innoDB es mucho mas lento para los updates... aqui te adjunto una estadística que he encontrado por internet.



Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar