Mysql
 sql >> Database >  >> RDS >> Mysql

CSV rotto, come posso risolverlo?

puoi essere in grado di ingannarlo e utilizzare un'espressione regolare per cercare:

"(.*?)"(?=,|$)

Ma è una specie di hack-ish (fondamentalmente, accetta una virgoletta finale solo se seguita immediatamente da una virgola o da una fine di riga). La stessa logica si applicherebbe a un trova-sostituisci. (Di nuovo, tutto questo presuppone che una citazione "errata" non seguirà mai le regole CSV standard (ad esempio avere una virgola/linea [inizio/fine] prima o dopo))

Presumo che tu non abbia alcun controllo sui dati originali e devi lavorare con quello che hai?

MODIFICA

Anche se l'ho provato solo su un piccolo campione dei tuoi dati, questo sembra trovare le virgolette "vaganti", a cui puoi utilizzare una sostituzione con "" su:

(?<!^|"|,)"(?!"|,|$)