sql >> Database teknologi >  >> RDS >> Mysql

Oprettelse af vognretur i csv-celle via php

CSV-specifikationen er en, som jeg finder implementeret på mange forskellige måder... det ser dybest set ud til, at den kun er halvspeceret, hvilket er frustrerende i betragtning af dets popularitet.

For at inkludere en ny linje i en celle i en CSV skal cellen muligvis ombrydes, eller den nye linje skal muligvis escapes. Du vil bemærke fra det linkede dokument, at der er tre måder at gøre dette på - og forskellige programmer behandler det forskelligt:

  1. Excel ombryder hele cellen i dobbelte anførselstegn:en celle kan have (ikke-udviklede) nylinjetegn i sig og betragtes som en enkelt celle, så længe den er pakket ind i dobbelte anførselstegn (bemærk også, at du skal bruge excel-stil dobbelte anførselstegn undslipper i celleindholdet)
  2. Andre programmer indsætter en enkelt omvendt skråstreg før tegnet, derfor en linje, der ender på \ betragtes ikke som slutningen af ​​en linje, men som et linjeskifttegn i cellen. En celle kan have unescaped newline-tegn inden for, så længe de er foranstillet af backslash-tegnet.
  3. Andre erstatter stadig en ny linje med escape-tegn i C-stil, den faktiske tegnsekvens \n eller \r\n . I dette tilfælde har cellen helt escapede nylinjetegn.

Problemet forværres af det potentielle behov for at undslippe kontroltegnene (såvel som andet indhold (f.eks. " i #1, og \ i #2+3) og forskellige escape-stile (f.eks. kan et indlejret citat escapes som:dobbelt dobbelt anførselstegn "" eller omvendt skråstreg-dobbelt anførselstegn \" )

Mit råd :generer et open-office-dokument med flere linjer og key escape-tegn og se, hvordan open-office genererer en CSV fil. Derfra kan du bestemme, hvilken af ​​ovenstående metoder der skal bruges til nye linjer i celler, og hvilken escape-metode.

eksempel på stil-1 (excel):

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

eksempel på stil-2:

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

eksempel på stil-3:

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


  1. Sådan fungerer MID()-funktionen i MySQL

  2. Mysql brugeroprettelse script

  3. MySQL:fejl i din SQL-syntaks ... nær nøgle ...?

  4. postgres installation, initialisering af databaseklyngen mislykkedes (Postgresql version 9.4.4)