Mysql
 sql >> Base de données >  >> RDS >> Mysql

CSV cassé, comment puis-je le réparer ?

Vous pouvez être capable de le tromper et d'utiliser une expression régulière pour rechercher :

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

Mais c'est un peu hack-ish (en gros, n'acceptez qu'un guillemet de fin lorsqu'il est immédiatement suivi d'une virgule ou d'une fin de ligne). La même logique s'appliquerait à une recherche-remplacement. (Encore une fois, tout cela suppose qu'une citation "errante" ne suivra jamais les règles CSV standard (par exemple, avoir une virgule/ligne [début/fin] avant ou après))

Je suppose que vous n'avez aucun contrôle sur les données d'origine et que vous devez travailler avec ce que vous avez ?

MODIFIER

Bien que je n'ai essayé cela que sur un petit échantillon de vos données, cela semble trouver les guillemets "errants", auxquels vous pouvez utiliser un remplacement par "" le :

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