Ricevo diversi file CSV ogni trimestre per elaborare un pacchetto SSIS e la formattazione è incoerente. In questo trimestre, ho incontrato quelli che io definisco qualificatori di testo facoltativo - qualificativo di testo di doppia citazione (") usato a volte, ma non sempre. Sembra che non abbiamo alcuna influenza sulle persone che forniscono questi dati per convincerli a fornire servizi puliti, dati coerenti.
Esempio dello scenario.
Bob,7823984234,"Lions, Tigers, Bears",This
Fred,67961654,"Little,Mermaid, ",That
George,4568,"Things,Stuff",The Other Thing
Barney,324578,"Items,",Something Else
Al,2q36789472,"And More",Another
Aggiornamento: ecco a cosa voglio convertire i dati.
"Bob","7823984234","Lions, Tigers, Bears","This"
"Fred","67961654","Little,Mermaid, ","That"
"George","4568","Things,Stuff","The Other Thing"
"Barney","324578","Items,","Something Else"
"Al","2q36789472","And More","Another"
Ho usato questi passaggi in un editor di testo per ripulire i dati manualmente. Sospetto che uno script Python sarebbe il modo più veloce per farlo in uno script, e creare una buona opportunità per me di immergermi in Python.
Passaggio 1
Cerca ÿ - Un carattere non trovato nel file di dati
Passaggio 2
Regex Sostituisci: ("[^"\r\n]*),([^"\r\n]*")
Con questo: $1ÿ$2
Ripeti fino a non più colpi
Passaggio 3
Regex Sostituisci: "([^"\r\n]*)"
Con questo: $1
Passaggio 4
Sostituisci: ("[^"])
Con questo: "$1
Passaggio 5
Sostituisci: ,
Con questo: ","
Passaggio 6
Regex Sostituisci: ^
Con questo: "
Passaggio 7
Regex Sostituisci: $
Con questo: "
Passaggio 8
Sostituisci: ÿ
Con questo: ,
Opzioni
Dovrei provare a risolvere questo in SSIS in un'attività Script?
Pulisci i dati in uno script al di fuori del pacchetto SSIS?
Guarda un set di strumenti SSIS di terze parti come Pragmatic Works o Cozyroc?
Qualche altro approccio migliore?