sql >> Databasteknik >  >> RDS >> Mysql

Skapar vagnretur i csv-cell via php

CSV-specifikationen är en som jag tycker är implementerad på många olika sätt... det verkar i grunden som att den bara är halvspecerad vilket är frustrerande med tanke på dess popularitet.

För att inkludera en ny rad i en cell i en CSV kan cellen behöva lindas, eller så kan den nya raden behöva escapes. Du kommer att märka från det länkade dokumentet att det finns tre sätt att göra detta - och olika program behandlar det på olika sätt:

  1. Excel lindar in hela cellen med dubbla citattecken:en cell kan ha (okodade) nyradstecken inom sig och betraktas som en enda cell, så länge den är inlindad i dubbla citattecken (observera att du också måste använda excel-stil dubbla citattecken i cellinnehållet)
  2. Andra program infogar ett enstaka snedstreck före tecknet, därför en rad som slutar på \ betraktas inte som slutet på en rad, utan som ett nyradstecken i cellen. En cell kan ha okodade nyradstecken så länge de föregås av omvänt snedstreck.
  3. Andra ersätter fortfarande en ny rad med C-stil tecken escape, den faktiska teckensekvensen \n eller \r\n . I det här fallet har cellen helt escaped nyradstecken.

Problemet förvärras av det potentiella behovet av att undkomma kontrolltecknen (liksom annat innehåll (t.ex. " i #1 och \ i #2+3) och olika stilar av escape (t.ex. ett inbäddat citat kan escapes som:dubbelt dubbla citattecken "" eller omvänt snedstreck-dubbelt citattecken \" )

Mitt råd :generera ett open-office-dokument med flera rader och key escape-tecken och se hur open-office genererar en CSV fil. Därifrån kan du bestämma vilken av ovanstående metoder som ska användas för nya rader i celler och vilken escapemetod.

exempel på stil-1 (excel):

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

exempel på stil-2:

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

exempel på stil-3:

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


  1. Hämta rader grupperade efter timme med MySQL

  2. avståndsberäkningar i mysql-frågor

  3. Java Spring REST API Hanterar många valfria parametrar

  4. MyISAM unika nycklar skärs av vid 64 byte, vilket orsakar kollisioner