Cosa devo fare con le nuove righe in questo file CSV in modo che vengano importate correttamente in un database o foglio di calcolo?


1

Ho un file .csv che è stato esportato da un sistema di database di cartelle cliniche elettroniche proprietario. Ero un abbonato al loro servizio ma al termine della mia sottoscrizione è così che posso conservare i miei dati e migrarli su un altro sistema. In poche parole, devo importarlo in un database o foglio di calcolo in modo da poter quindi utilizzare la stampa unione di Word per ricreare i documenti della cartella clinica in un formato leggibile e stamparli.

Il problema è che quando apro il file direttamente con Excel o lo importazione con Access, ci sono formattazioni di nuove righe all'interno di molte voci del campo dati che vengono interpretate erroneamente come separatori di record. Questo fa sì che Excel o Access inizino una nuova riga nel mezzo della voce che ovviamente rovina tutto. Quando ho aperto il file con Notepad ++ e attivato "Mostra tutti i caratteri", posso vedere che le nuove righe del separatore di record reali sono simboli CR LF, ma le righe di formattazione all'interno delle voci sono simboli LF da sole. Da una lettura veloce ho appreso che le voci dei campi di dati CSV che contengono una nuova riga dovrebbero idealmente essere racchiuse tra virgolette doppie, ma quelle nel mio file non lo sono, quindi presumo che questa sia l'origine del problema.

Come devo fare per risolvere questo? Esiste un modo con Access, Excel o qualsiasi programma open source per renderlo da solo renderizzare gli LF come una nuova riga di formattazione all'interno della voce del campo dati? Riesci a convertire gli LF da solista in qualche altro tipo di nuova riga in modo da renderli correttamente? Anche se ignorasse solo gli LF che non erano preceduti da CR, forse quando in seguito uso la stampa unione di Word per produrre i documenti, renderebbe gli LF correttamente come newline? Un'altra possibilità che pensavo potesse funzionare era quella di fare una sorta di operazione di ricerca / sostituzione per sostituire tutti gli LF da solista con un altro carattere fino a quando non li ho importati nel database, quindi sostituire quel personaggio con il tipo corretto di newline una volta che è nel database o dopo aver creato il documento tramite stampa unione. Oppure esiste un tipo di operazione di ricerca / sostituzione che potrebbe racchiudere ogni voce di campo contenente un LF solo tra virgolette? Cavolo, anche se c'è un modo per racchiudere in modo non selettivo ogni voce del campo dati nel file tra virgolette doppie dovrebbe funzionare, giusto? Non sono sicuro del modo più semplice per procedere da qui e apprezzare eventuali suggerimenti.

Risposte:


2

In notepad ++ l'espressione regolare "[^ \ r] \ n" corrisponderà a LF, ma non a CRLF. Ora sostituiscilo con quello che vuoi. Questa risposta contiene informazioni utili.


Questo non corrisponde a righe vuote (contenenti solo LF)
rluks

Utilizzare [^\r]?\nper tenere conto anche di quelli che rendono CRfacoltativo.
Oliver,

0

Se il CSV è correttamente citato, ovvero doppie virgolette attorno a tutto ciò che potrebbe essere interpretato come una delimitazione di una "cella", LibreOffice dovrebbe fare il suo lavoro. (YMMV) Vedi Wikipedia per una descrizione del formato CSV.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.