On Sun, 3 Oct 2004 10:47:50 +0200, Paolo Sinigaglia <sini@xxxxxxxxxxxx> wrote:
> Hello Eagleone,
>
> Sunday, October 3, 2004, 4:54:40 AM, you wrote:
>
> E> Il mio problema è questo: ho un file csv proveniente da un dump di un
> [...]
> E> Me ne resta solo uno: alcune tuple del db contengono campi text su più
> E> righe e questo fa impazzire csv2sql.
>
> E> Nel file csv ci sono quindi delle righe con meno di n-1 ";" (ossia
> E> delle tuple su più righe. Per fortuna l'ultima colonna del db è sempre
> E> senza testo a capo)
>
> La prima risposta e' che quel file NON e' csv. I <cr> all'interno dei campi
> dovrebbero essere escapati, proprio per evitare il tuo tipo di problema.
> Fammi indovinare, il "database" in questione e' access (o peggio ancora
> excel)?
No è peggio!!! E' un bel database Oracle... Solo che me lo passano
solo attraverso prodottazzi M$ e alla fine ottengo quello schifo.
>
> E> Mediante script vorrei per lo meno individuare queste righe e magari
> E> correggerle automaticamente.
>
> E' tutto meno che banale: limitarsi a contare i ";" contenuti nelle righe puo'
> essere fuorviante, visto che possono esserci dei ; anche all'interno di campi,
> purche' delimitati da "".
Be questo è ovvio. Ma una volta presa una riga il controllo non è difficile.
> Potresti tentare di parsare il csv e contare i campi ma, quando c'ew' un campo
> che contiene un <cr> questo sara' delimitato solo da una parte e non
> dall'altra
> e il parser te lo segnalera' come errore.
>
> Temo che non esistano soluzioni semplici, la cosa migliore e' scriversi un
> convertitore M$csv->csv che elimini tutte le schifezze non standard: non ho
> esperienza personale con i "csv" generati da access, ma purtroppo ho avuto
> piu'
> volte a che fare con quelli prodotti da excel ed e' un delirio, basti dire che
> in certi casi excel NON e' in grado di rileggere i file "csv" che ha generato!
Più che usare dos2unix non saprei che fare.
Rimane da dire solo una cosa...
Kill Bill
|