[bglug] Script per comparare files csv

Jimmi jimmi@bglug.it
Ven 26 Mar 2010 07:21:54 CET


Ciao,

ho un problemino meno banale di quanto pensavo da cui non riesco ad  
uscire, e chiedo aiuto agli *Scriptman* in ascolto.

Ho un database testuale .csv aggiornato giornalmente che Drupal usa  
per importare i dati. Per evitare che ogni giorno vengano processate  
migliaia di righe vorrei confrontare il file con quello del giorno  
precedente e produrne un terzo che contenga solo i record nuovi o  
modificati.

In FreeBSD ho trovato un lussuoso programmino in Perl a nome csvdiff,  
il cui output perņ č il seguente:

# csvdiff -e libro.csv -a libro1.csv

-------------------------------------------------------------------------------

Record no: 002 is different:
  Actual   line: 1,9788845905933,"Godel, Escher, Bach",Un'eterna  
ghirlanda brillante ,Douglas R. HOFSTADTER,Adelphi,,,25,,,1,,,,,a1,,
  Expected line: 1,9788845905933,"Godel, Escher, Bach",Un'eterna  
ghirlanda brillante ,Douglas R. HOFSTADTER,Adelphi,,,30,,,1,,,,,a1,,
   Difference in field no.: 11
    Actual  : 25
    Expected: 30

===============================================================================

Folowing lines exists only in expected result libro.csv:

-------------------------------------------------------------------------------

  Actual line 005 : 4,9788807017636,Annibale,Un viaggio,Paolo  
RUMIZ,Feltrinelli,,,14,,,5,,,,,b3,,

che non mi aiuta moltissimo. Pensate che possa ricavarne qualcosa o č  
meglio che riparta da capo? Nel secondo caso sapete darmi qualche  
dritta sulla direzione da prendere?

Grazie :)
-- 
Jimmi


Maggiori informazioni sulla lista bglug