• User

    Importazione grandi file xml o txt

    Ciao ragazzi,

    chiedo scuso se ri-posto, ma forse ho formulato male la domanda.
    

    Ho necessità di importare dei records da un documento XML o TXT di grandi dimensioni (91Mb il file XML e 23 Mb il file TXT) in un database MySQL. Questi file sono aggiornati 3 volte a giorno, per cui io devo fare in modo che il database sia sempre aggiornato.....

    Mi hanno detto di fare un batch ftp, ma non so cosa sia.....

    Ragazzi vi prego, datemi una mano, non so dove sbattere la testa!!!!

    GRAZIE a chi mi vorrò rispondere.....:))

    Mauretto


  • User Attivo

    Prova a farti una query in locale, zippa e vedi quando pesano i files. Se sei fortunato riesci in questo modo.


  • User

    Ciao linoma,

    e grazie per la risposta.
    

    Ti chiedo scusa, puoi essere + dettagliato?....non ho capito cosa intendi per query locale..e come zippo/unzippo il file?

    Ti ringrazio di cuore 🙂

    M.


  • User Attivo

    Il discorso è molto semplice, spero che poi faccia al caso tuo. Devi cmq fare delle queries per importare i tuoi files in MySQL. Per evitare il trasferimento dei 20 ed oltre MBs, dicevo forse se provi a creare in locale un file .sql con dentro la tua INSERT INTO VALUES(....) etc etc.
    Lo zippi e poi la carichi, anche cn phpmyadmin, forse riesci a portarti un file cn una riduzione che potrebbe arrivare anche 10 a 1. 🙂
    Ripeto è un'idea che va poi valutata alla luce della realta che hai.


  • User

    Ciao,

    allora, sono riuscito a fare questa cosa, sono a metà della soluzione.

    Prendo il file txt, lo apro con fopen, lo sfoglio riga per riga con fgets (4096).

    Ogni riga me la esplodo con explode e poi mi importo il tutto con un ciclo for.

    Funziona tutto perfettamente ma.........mi va in timeout dopo 30 secondi....

    Ho provato a spezzettare la query in più. Ho notato che se faccio fare contemporaneamente più cicli da 1000 l'uno (da 0 a 1000, da 1001 a 2000 etc..) riesco a fargli fare tutto.....

    Vi prego, sapete dirmi se è un approccio che va bene?....insomma se avete altre idee per migliorare la cosa, magari dopo posto il codice finale che sarà di aiuto ad altri..?

    GRAZIE 🙂


  • User Attivo

    Se va bene x te va bene x tutti, questo e' chiaro 🙂 forse ad ogni intervallo ti conviene aggiornare il timeout cs nn scade.

    php.net/manual/en/function.set-time-limit.php