2009-08-15 21 views
12

Tengo un montón de datos que quiero insertar y he decidido usar la inserción masiva para mysql.bulk insert mysql - ¿Puedo usar la cláusula ignore? hay un límite para no. de registros para inserciones masivas?

inserto en amigos valores (solicitante, de amigos) (valor1, valor2), (valor2, valor1), (valor3, valor4), (valor4, valor3), ...

me gustaría saber el siguiente:

1) ¿puedo usar ignorar? por ejemplo

inserción ignorar en amigos valores (solicitante, de amigos) (valor1, valor2), (valor2, value1), (valor3, valor4), (valor4, valor3), ...

¿Qué pasa si tener duplicado? ¿a) no insertará todo? b) insertar los registros antes del registro duplicado y detener el procesamiento de los datos después de eso? c) ignorar el duplicado y continuar con el resto?

2) hay un límite para el no. de registros que puedo usar para una inserción masiva como esta?

Gracias.

Respuesta

19

Sí, puede utilizar la palabra clave "ignorar" y simplemente ignorará los errores duplicados. Insertará cada fila que pueda, omitiendo aquellas que darían lugar a duplicados (y no detendrá el procesamiento de datos). Si hace algo como esto (donde suponemos que la primera columna es una clave principal):

insertar ignorar en c valores (1,1), (2,2), (3,3), (3,5), (4,5);

Eso significa que se insertará (3,3) y (3,5) no. Se insertará todo excepto (3,5) (suponiendo una nueva tabla.)

Probablemente no exista un límite estricto, pero es posible que desee hacer pruebas para ver dónde debe trazar la línea en función de sus necesidades.

Editar: Parece que MySQL tiene un límite configurable en el tamaño de las consultas SQL, con el valor predeterminado es de 1MB. Más información: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit.

6

También hay un límite de 50,000 filas que puede tener una consulta INSERT.

Cuestiones relacionadas