sql >> Database >  >> RDS >> Mysql

Carreturns maken in csv-cel via php

De CSV-specificatie is er een die ik op veel verschillende manieren geïmplementeerd vind... het lijkt eigenlijk alsof het maar half gespecificeerd is, wat frustrerend is gezien de populariteit.

Om een ​​nieuwe regel in een cel in een CSV op te nemen, moet die cel mogelijk worden ingepakt of moet de nieuwe regel worden geëscaped. U zult in het gekoppelde document zien dat er drie manieren zijn om dit te doen - en verschillende programma's behandelen het anders:

  1. Excel plaatst de hele cel tussen dubbele aanhalingstekens:een cel kan (unscaped) nieuweregeltekens bevatten en als een enkele cel worden beschouwd, zolang deze tussen dubbele aanhalingstekens staat (merk ook op dat u Excel-stijl moet gebruiken dubbele aanhalingstekens escapen binnen de celinhoud)
  2. Andere programma's voegen een enkele backslash in voor het teken, dus een regel die eindigt op \ wordt niet beschouwd als het einde van een regel, maar als een teken voor een nieuwe regel in de cel. Een cel kan nieuwe regeltekens zonder escapecodes bevatten, zolang ze worden voorafgegaan door het backslash-teken.
  3. Anderen vervangen nog steeds een nieuwe regel met teken-escaping in C-stijl, de eigenlijke tekenreeks \n of \r\n . In dit geval is de cel volledig ontsnapt uit nieuwe regeltekens.

Het probleem wordt nog verergerd door de mogelijke noodzaak om te ontsnappen aan de controletekens (evenals andere inhoud (bijv. " in #1, en \ in #2+3) en verschillende escape-stijlen (bijv. een ingesloten aanhalingsteken kan worden geëscaped als:dubbele dubbele aanhalingstekens "" of backslash-dubbele aanhalingstekens \" )

Mijn advies :genereer een open-office-document met meerdere regels en key-escape-tekens en zie hoe open-office een CSV genereert het dossier. Van daaruit kunt u beslissen welke van de bovenstaande methoden u wilt gebruiken voor nieuwe regels in cellen en welke escape-methode.

voorbeeld van stijl-1 (excel):

#num,str,num
1,"Hello
World",1990
2,"Yes",1991

voorbeeld van stijl-2:

#num,str,num
1,Hello \
Word,1990
2,Yes,1991

voorbeeld van stijl-3:

#num,str,num
1,Hello \nWorld,1990
2,Yes,1991


  1. Android Room:hoe kan ik het hernoemen van kolommen migreren?

  2. MySQL 8 instellen vanuit Binary Tarball

  3. Neo4j - Maak een index met Cypher

  4. mysql dubbele gegevens verwijderen