2009-05-21 22 views
8

¿Cómo puedo insertar, por ejemplo, 100 000 filas en la tabla MySQL con una sola consulta?¿Cómo inserto una gran cantidad de filas en MySQL?

+0

La pregunta obvia es "¿de qué?". Si la respuesta es de memoria, comience a escribir un archivo SQL con mucho cuidado. De lo contrario, use un lenguaje y entorno apropiados. –

Respuesta

-1

No puede, por lo que yo sé. Necesitarás un bucle.

3

Puede hacer una inserción por lotes con la instrucción INSERT, pero su consulta no puede ser mayor que (un poco menos que) max_allowed_packet.

Para 100k filas, dependiendo del tamaño de las filas, es probable que exceda esto.

Una forma sería dividirlo en varios trozos. Esta es probablemente una buena idea de todos modos.

Como alternativa, puede utilizar LOAD DATA INFILE (o LOAD DATA LOCAL INFILE) para cargar desde un archivo delimitado por tabuladores (u otro archivo delimitado). Ver documentos para más detalles.

LOAD DATA no está sujeto al límite de max_allowed_packet.

7
insert into $table values (1, a, b), (2, c, d), (3, e, f); 

Eso realizará una inserción de 3 filas. Continúa según sea necesario para llegar a 100,000. Hago bloques de ~ 1,000 de esa manera cuando hago ETL.

Si sus datos están estáticamente en un archivo, transformarlo y usar cargar datos infile será el mejor método, pero supongo que usted está pidiendo esto porque hace algo similar.

También tenga en cuenta lo que alguien más dijo sobre el tamaño max_allowed_packet que limita la duración de su consulta.

0

Intente utilizar LoadFile() o Convierta yor Data en un archivo XML y luego use la función Cargar y extraer() para cargar datos en la base de datos MySQL.

Ésta es la sola consulta y la opción más rápida,

Incluso yo estoy haciendo lo mismo, tenía archivos si alrededor de 1,5 GB millones de filas. He utilizado Both Option en mi caso.

Cuestiones relacionadas