Lavorare su grossi file di testo

Quando devi migrare un database da un dbms ad un altro o esistono dei tool fatti e testati che fanno questo lavoro, oppure te li crei oppure ti esporti tutto in un bel file sql corposo e cerchi di ricaricare i vecchi dati sulle tabelle nuove.
Nel caso recente, un db con 25milioni di record su PostGres da migrare a Mysql, dumpato in plaintext sql ha generato un file di 2.4GB e spicci.
Problema: una volta creato il file sql scopri che alcune righe all’inizio del file generano errori e bloccano l’importazione. Che fare? Se hai a disposizione una shell Unix-like:

  • giochi con tail/awk
  • provi ad editare con vi il file e salvarlo
  • (cosa che mi sembrava più utile) splitti il file in file più piccoli da 500k righe l’uno e poi editi il primo

Su Windows le cose sono naturalmente più fastidiose:
ho sempre usato editor di testo derivanti dalle librerie Scintilla (SciTe ed Notepad++ in primis), sono belle potenti ma hanno il bruttissimo difetto di diventare praticamente inutili quando si trovano di fronte file grossi.

Update 1: mi è venuto in mente che in realtà per Windows Server esiste un resource kit contenente il tail.
Oppure si può usare il comando more +numero_di_righe.
Resta il fatto che  non esiste il comando split nativo, bisogna giocare con il rognoso FOR di DOS.

Soluzione commerciale il caro vecchio UltraEdit, che è a pagamento ma devo dire, non mi ha mai deluso.
Cercando su Stackoverflow ho poi trovato una chicca: TheGun un vecchio editor scritto in assembler e il suo successore, TopGun

Il primo è riuscito ad aprire il file ma aveva problemi nel modificarlo, il secondo ha aperto il file e mi ha permesso di modificarlo come UltraEdit.

Ora, naturalmente in quesot caso si lavorava a bocce ferme e mi sto iniziando a studiare il funziamento degli ETL con Pentaho, perchè non ho a disposizione SSIS di Microsoft, ma la curiosità mi è rimasta.
Quali consigli avete per editare GROSSI file di testo? Script/linguaggi/editor, qualsiasi suggerimento è gradito.

abdul

Abdul Alhazared, a.k.a. Al Azif, ha circa 1000 anni e gironzola su vari piani dell'esistenza. Dopo aver scritto il Necronomicon si è dedicato alla tecnologia e alla scienza, muovendosi di tanto in tanto in Europa.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

Torna in alto
Rlieh
Panoramica privacy

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.