Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

CSV quebrado, como posso corrigi-lo?


Você pode ser capaz de enganá-lo e usar um regex para procurar:
"(.*?)"(?=,|$)

Mas isso é meio hack-ish (basicamente, só aceite uma aspa final quando imediatamente seguida por uma vírgula ou um fim de linha). A mesma lógica se aplicaria a um localizar-substituir. (Novamente, tudo isso pressupõe que uma cotação "perdida" nunca seguirá as regras CSV padrão (por exemplo, ter uma vírgula/linha [início/fim] antes ou depois))

Presumo que você não tenha controle sobre os dados originais e tenha que trabalhar com o que tem?

EDITAR

Embora eu só tenha tentado isso em um pequeno amostra de seus dados, isso parece encontrar as aspas "perdidas", para as quais você pode usar uma substituição com "" sobre:
(?<!^|"|,)"(?!"|,|$)