Large MySQL Inserti batch da PHP: eseguire l'inserimento dallo script o salvare come file SQL?

0

Abbiamo un dataset di grandi dimensioni che risiede attualmente in molti, molti fogli di lavoro.
Ho ricevuto il compito di ottenere parte di questi dati nel nostro DB MySQL.
Quando tutto è stato detto, probabilmente inserirò da qualche parte circa 3 milioni di righe.

Ho intenzione di raccogliere gli inserti in batch di circa un quarto di milione circa (analizzandoli con PHP).
Inizialmente, il mio piano era di eseguire / inviare quegli INSERT in batch direttamente dal mio script.
Più recentemente, però, ho pensato di scrivere gli INSERT in .sql per l'importazione successiva.

Ho provato a google in giro un po '... non ho trovato molto.
Ci sono dei veri pro / contro in un modo o nell'altro?
In caso contrario, sono propenso a seguire il mio piano originale.
Altrimenti, sono completamente aperto ai suggerimenti.

    
posta mOrloff 01.05.2014 - 19:08
fonte

2 risposte

2

L'unico vantaggio importante che vedo in un modo o nell'altro è quello di creare i file .sql, se si verifica qualche problema e devi spazzare via il database e ripetere il processo di importazione, non devi -run i tuoi script contro i fogli di calcolo. Oppure guardandolo in un altro modo, è possibile testare il processo su un server di test prima di eseguire l'importazione effettiva.

Ma se questa è solo una cosa di una volta, alla fine, o sarebbe sufficiente.

    
risposta data 01.05.2014 - 19:30
fonte
1

Penso che importare milioni di record attraverso lo script php non sia una buona idea. Quello che puoi fare è preparare più file .sql con una serie di record basati sull'impostazione del tempo di esecuzione e della memoria del tuo server. e mettilo in una directory di posizione fissa anche il nome di file .sql con una sequenza logica in modo da poter leggere il file a livello di codice.

Scrivi un piccolo script di shell che estrae ogni voce di file in quella particolare directory. In termini di UNIX / LINUX è necessario scrivere script di shell. Se si tratta di un server Windows, è necessario scrivere un file batch.

e all'interno del file batch scrivi il seguente comando.

mysql -u userName -p password databaseName < FileName.sql > logfile.log

Ora assumiamo di aver creato un file da 10 sql. così ho chiamato come 1.sql, 2.sql e così via e accedere a quelli in loop usando lo script di shell / file batch.

    
risposta data 23.05.2014 - 12:59
fonte

Leggi altre domande sui tag