sql >> Database >  >> RDS >> Mysql

Gebroken CSV, hoe kan ik dit oplossen?

Je mag in staat zijn om het te misleiden en een regex te gebruiken om te zoeken naar:

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

Maar dat is een beetje hack-achtig (accepteer in principe alleen een eindcitaat als het onmiddellijk wordt gevolgd door een komma of een einde van de regel). Dezelfde logica zou van toepassing zijn op een zoek-vervanging. (Nogmaals, dit alles veronderstelt dat een "verdwaalde" quote nooit de standaard CSV-regels zal volgen (bijvoorbeeld een komma/regel [begin/eind] ervoor of erna))

Ik neem aan dat je geen controle hebt over de originele gegevens en moet werken met wat je hebt?

BEWERKEN

Hoewel ik dit alleen heb geprobeerd op een kleine voorbeeld van uw gegevens, dit lijkt de "verdwaalde" aanhalingstekens te vinden, die u kunt vervangen door "" op:

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


  1. Maak een database in SQL Server 2017

  2. records moeten groeperen op basis van overeenkomende omkeringen

  3. Prestaties in PDO / PHP / MySQL:transactie versus directe uitvoering

  4. Hoe de kolompositie van de MySQL-tabel wijzigen zonder kolomgegevens te verliezen?