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

Как да поправя проблема с квалификатора на вградения текст, докато експортирате данни в CSV плосък файл?

Не бих предложил този отговор, освен че работихте толкова усилено, за да го документирате и той беше гласуван в подкрепа без отговор след месец. И така, ето го. Единственият ви избор изглежда е да промените данните или инструмента.

Когато инструментът е счупен и продавачът не го интересува, е грешка да продължавате да опитвате. Време е за смяна. Полагате много усилия, за да проучите как точно е повреден и да демонстрирате, че нарушава не само RFC, но и предишната версия на инструмента. Колко повече доказателства ви трябват?

CSV също е котва за лодка. Ако имате възможност, по-добре е да използвате обикновен файлов формат с разделители. За много приложения разделянето с разделители е добро. Най-добрият разделител IMO е '\', тъй като този знак няма място в текста на английски. (От друга страна, няма да работи за данни, съдържащи имена на пътища на Windows.)

CSV има два проблема като формат за обмен. Първо, не всичко е толкова стандартно; различните приложения разпознават различни версии, каквото и да се казва в RFC. Второ (и свързано) е, че той не представлява обикновен език в термините на CS, поради което не може да бъде анализиран като регулярен израз. Сравнете с ^([^\t]*\t)*[\t]*$ за линия, разделена с разделители. Практическото значение на сложността на дефиницията на CSV е (вижте по-горе) относителният недостиг на инструменти за справяне с тях и тенденцията им да бъдат несъвместими, особено през малките часове.

Ако заредите CSV и DTS, имате добри опции, една от които е bcp.exe . Той е много бърз и безопасен, защото Microsoft не се е изкушавал да го актуализира от години. Не знам много за DTS, но в случай, че трябва да го използвате за автоматизация, IIRC има начин да извикате външни помощни програми. Внимавайте обаче с този bcp.exe не връща надеждно състояние на грешка в обвивката.

Ако сте решени да използвате DTS и да се придържате към CSV, тогава най-добрата ви оставаща опция е да напишете изглед, който подготвя данните по подходящ начин за него. Ако се върна в този ъгъл, бих създал схема, наречена, да речем, „DTS2012CSV“, така че да мога да напиша select * from DTS2012CSV.tablename , давайки шанс на всеки, който го е грижа, да го разбере (защото ще го документирате, нали в коментари в текста за преглед?). Ако е необходимо, други могат да копират неговата техника за други счупени екстракти.

HTH.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете индекс за низова колона в sql?

  2. Как да извлечете стойности от колона и да актуализирате резултата в друга колона

  3. Кой е най-добрият начин да се осигури референтна цялост на репликирана база данни?

  4. Повторете редовете N пъти според стойността на колоната

  5. Как да се ПРИСЪЕДИНИТЕ към таблица, която има множество стойности в колоната?