2010-10-08 27 views
9

Verileri SQL Server'dan CSV biçimine aktarmaya çalışıyorum. Düzenli aralıklarla çalıştırılan bir yarasa görevim var. Komut şu şekilde olabilir:SQLCMD.EXE kullanarak CSV verilerini dışa aktarma

SQLCMD.EXE -d [db details] -i c:\export.sql -o c:\export.csv -s"," -W 

SQL dosyası bir görünümden sadece bir SELECT * 'dir.

Bu satırların bazılarında verilerde virgüllerin bulunması dışında çalışır, dolayısıyla değerlerin belirtilmesi gerekir. Sütun ayırıcıyı "','" olacak şekilde değiştirebilirdim, ancak sonra da verilerdeki tek tırnaklardan kaçmak için SQL Server'a ihtiyacım vardı.

Ayırıcıyı başka bir karaktere çevirmek,% 100'lük bir sorunla sorunu çözmek için olası değildir; çünkü alanlardan biri, her çeşit garip ve harika karakter içeren başka bir uygulamadan seri hale getirilmiş veriler içerir.

Standart, alıntılanan CSV verilerini almamın bir yolu var mı?

cevap

9

QUOTENAME işlevini kullanmak için SELECT ifadenizi değiştirebilmeniz gerekir. Tabii ki, tüm sütunları SELECT * kullanmak yerine tek tek listelemelisiniz.

Not: Ekranda okumak zor olabilir, ama QUOTENAME için ikinci bir parametredir:

{tek tırnak} {çift tırnak} {tek tırnak}

SELECT QUOTENAME(Column1, '"'), QUOTENAME(Column2, '"') 
    FROM YourView 
+0

sayesinde bu işler kusursuzca. –

+0

NULL çıkışı "" olarak nasıl yapılır? – PerlDev

+0

Bir toplu iş dosyasında, böyle bir çekicilik gibi çalıştı (gecikmeli genişletme etkinleştirildi ve "char" dan kaçmak için çift tırnak işareti verildi: QUOTENAME SELECT (FieldName, '""), .... – djangofan

İlgili konular