2009-05-21 19 views
8

Come inserisco per esempio 100.000 righe nella tabella MySQL con una singola query?Come inserire un numero elevato di righe in MySQL?

+0

La domanda ovvia è "da cosa?". Se la risposta proviene dalla memoria, quindi inizia a digitare un file SQL con molta attenzione. Altrimenti, utilizzare un linguaggio e un ambiente appropriati. –

risposta

-1

Non puoi per quanto ne so. Avrai bisogno di un ciclo.

3

È possibile eseguire un inserimento batch con l'istruzione INSERT, ma la query non può essere maggiore di (leggermente inferiore a) max_allowed_packet.

Per file da 100.000, in base alla dimensione delle righe, probabilmente lo supererete.

Un modo sarebbe dividerlo in diversi blocchi. Questa è probabilmente una buona idea comunque.

In alternativa è possibile utilizzare LOAD DATA INFILE (o LOAD DATA LOCAL INFILE) per caricare da un file delimitato da tabulazioni (o altro delimitato). Vedi i documenti per i dettagli.

LOAD DATA non è soggetto al limite max_allowed_packet.

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

Che eseguirà un inserimento di 3 righe. Continua secondo necessità per raggiungere 100.000. Faccio blocchi di ~ 1,000 in questo modo quando si lavora con ETL.

Se i dati sono staticamente in un file, trasformandolo e l'utilizzo di dati di carico infile sarà il metodo migliore, ma credo che stai chiedendo perché si fa qualcosa di simile.

Nota anche cosa ha detto qualcun altro sulla dimensione max_allowed_packet che limita la lunghezza della query.

0

Provare a utilizzare LoadFile() o Converti yor Data in file XML e quindi utilizzare la funzione Load ed Extract() per caricare dati nel database MySQL.

Questa è la sola query e l'opzione più veloce,

Anche io sto facendo lo stesso, ho avuto i file se 1,5 GB in giro milioni di righe. Ho usato entrambe le opzioni nel mio caso.

Problemi correlati