sql >> Databáze >  >> RDS >> Mysql

Vytvoření návratů vozíku v buňce csv pomocí php

Specifikace CSV je jeden, který jsem našel implementovaný mnoha různými způsoby... v podstatě se zdá, že je pouze poloviční, což je frustrující vzhledem k jeho popularitě.

Chcete-li zahrnout nový řádek do buňky v CSV, může být nutné buňku zabalit nebo nový řádek může vyžadovat escapování. Z propojeného dokumentu si všimnete, že existují tři způsoby, jak to udělat – a různé programy s tím zacházejí různě:

  1. Excel zalomí celou buňku do dvojitých uvozovek:buňka může obsahovat (neumístěné) znaky nového řádku a může být považována za jedinou buňku, pokud je zabalena do dvojitých uvozovek (všimněte si také, že budete muset použít styl Excel dvojité uvozovky v obsahu buňky)
  2. Jiné programy vkládají před znak jedno zpětné lomítko, tedy řádek končící na \ se nepovažuje za konec řádku, ale za znak nového řádku v buňce. Buňka může obsahovat znaky nového řádku bez escapování, pokud jim předchází znak zpětného lomítka.
  3. Jiné stále nahrazují nový řádek escapováním znaků ve stylu C, skutečnou posloupností znaků \n nebo \r\n . V tomto případě má buňka zcela zakódované znaky nového řádku.

Problém je umocněn potenciální potřebou uniknout řídicím znakům (a také dalšímu obsahu (např. " v #1 a \ v #2+3) a různé styly escapování (např. vložená uvozovka může být uvozena takto:dvojitá uvozovka "" nebo zpětné lomítko - dvojitá uvozovka \" )

Moje rada :vygenerujte dokument otevřené kanceláře s více řádky a klíčovými znaky escape a podívejte se, jak open office generuje CSV soubor. Odtud se můžete rozhodnout, kterou z výše uvedených metod použít pro nové řádky v buňkách a kterou metodu escapování.

příklad stylu-1 (excel):

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

příklad stylu 2:

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

příklad stylu 3:

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


  1. Mám zacházet s GraphQL ID jako s řetězcem na klientovi?

  2. Vícevláknová C# aplikace s voláním databáze SQL Server

  3. Existuje nějaký datový typ seznamu v uložených procedurách MySQL nebo způsob, jak je emulovat?

  4. SQL Jak nahradit hodnoty select return?