Mysql
 sql >> база данни >  >> RDS >> Mysql

Създаване на връщане на карета в csv клетка чрез php

CSV спецификацията е един, който намирам за реализиран по много различни начини... по принцип изглежда, че е само наполовина, което е разочароващо предвид популярността му.

За да включите нов ред в клетка в CSV, там клетката може да се наложи да бъде обвита или новият ред може да се наложи да се екранира. Ще забележите от свързания документ, че има три начина да направите това - и различните програми го третират по различен начин:

  1. Excel обвива цялата клетка в двойни кавички:клетка може да има (неекранирани) знаци за нов ред в себе си и да се счита за единична клетка, стига да е обвита в двойни кавички (обърнете внимание, че ще трябва да използвате стил на excel двойни кавички избягват в съдържанието на клетката)
  2. Други програми вмъкват една обратна наклонена черта преди знака, следователно ред, завършващ на \ не се счита за край на ред, а символ за нов ред в клетката. Една клетка може да има неекранирани знаци за нов ред в рамките на толкова дълго, колкото са предшествани от обратна наклонена черта.
  3. Други все още заменят нов ред с екраниращ символ в стил C, действителната последователност от знаци \n или \r\n . В този случай клетката има напълно екранирани знаци за нов ред.

Проблемът се усложнява от потенциалната нужда да се избягват контролните знаци (както и друго съдържание (напр. " в #1 и \ в #2+3) и различни стилове на екраниране (напр. вграден цитат може да бъде екраниран като:двоен двоен кавичък "" или обратна наклонена черта-двойни кавички \" )

Моят съвет :генерирайте документ на open-office с множество реда и клавишни escape знаци и вижте как open-office генерира CSV файл. Оттам можете да решите кой от горните методи да използвате за нови редове в клетките и кой метод за избягване.

пример за стил-1 (excel):

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

пример за стил-2:

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

пример за стил-3:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. InnoDB или MyISAM - Защо не и двете?

  2. SQL заявката не показва очаквания резултат

  3. Как да обедините данни от няколко колони в една? [Заявка за модел на списък със съседство]

  4. SECOND() Пример – MySQL

  5. Как да актуализирам стойност в ред в MySQL с помощта на Connector/C++