Qualificatore di testo opzionale nel file CSV come input per il pacchetto SSIS

0

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?

    
posta Kennah 28.07.2015 - 17:49
fonte

1 risposta

1

Non sono sicuro di quale sia il tuo obiettivo finale in termini di pulizia.

Comunque, Python può davvero aiutarti qui. Puoi utilizzare il modulo csv nella libreria standard o un pacchetto esterno come PETL.

Entrambi citeranno automaticamente i valori dei campi che devono essere citati. Ad esempio, se il terzo valore della colonna è Items, , verrà quotato (poiché contiene il carattere separatore), ma se è Items , non verrà quotato.

Sarai anche in grado di passare valori ai tuoi metodi per ripulire 1,2, in 1,2 se questo è il tuo obiettivo

    
risposta data 28.07.2015 - 18:32
fonte

Leggi altre domande sui tag