Devo inserire circa 1,8 milioni di righe da un file CSV in un database MySQL. (solo una tabella)MySQL Inserimento di grandi set di dati da file con Java
Attualmente si utilizza Java per analizzare il file e inserire ogni riga.
Come potete immaginare, ci vogliono molte ore per essere eseguiti. (10 in modo razionale)
Il motivo per cui non lo inserisco direttamente nel file nel db, è che i dati devono essere manipolati prima di essere aggiunto al database.
Questo processo deve essere eseguito da un responsabile IT. Così l'ho configurato come un bel file batch da far girare dopo che hanno rilasciato il nuovo file csv nella giusta posizione. Quindi, ho bisogno di farlo funzionare bene, inserendo il file in una determinata posizione ed eseguendo un file batch. (Ambiente Windows)
La mia domanda è, quale sarebbe il modo più veloce per inserire tanti dati; inserti di grandi dimensioni, da un file analizzato temporaneo o un inserto alla volta? qualche altra idea forse?
La seconda domanda è: come ottimizzare la mia installazione MySQL per consentire inserimenti molto veloci. (Vi sarà un punto in cui una grande selezionato di tutti i dati è richiesto pure)
Nota: la tabella verrà eventualmente droped e l'intero processo eseguito nuovamente in un secondo momento.
Alcuni chiarimenti: attualmente in uso ... opencsv.CSVReader per analizzare il file, quindi facendo un inserimento su ogni riga. Sto considerando alcune colonne e ignorando gli altri.
Altro chiarimento: locale DB tabella MyISAM
Non inserire per ogni riga, lotti fino un sacco di file e rendere meno DB chiama, la velocità salirà drammaticamente. Vedere la mia risposta per un semplice esempio di batch PreparedStatement. – Hardwareguy