2012-12-20 26 views
5

Veritabanına yüklenecek BCP dosyalarını oluşturmak için basit bir SQL deyimi üzerinde çalışıyorum. SQL Tüm Sütunlar İçin Sınırlandırılmış Sonuçlar Al

Bu BCP dosyaları

aşağıdaki biçimdedir:

1|name|otherfield|otherfield1 

Şu anda yapıyorum bu gibi dosyaları oluşturmak için:

SELECT id+"|"+name+"|"+otherfield+"|"+otherfield1+"\n" FROM table 

zorunda kalmadan every column seçecektir bir select deyimi var mı onlara isim ver Sen SELECT ... INTO OUTFILE kullanabilirsiniz

SELECT * with "|" from Table 
+1

Bu, gerçekten ilk etapta bunu yapmanın doğru yolu mu? Sütunlarınızdan biri "|" içeriyorsa ne olur? Başvurmanız gereken kaçış kuralları yok mu? – deceze

+0

@deceze bu çok iyi bir nokta, maalesef bunları okuyan senaryoda "kontrolüm dışında" ve bekliyor | ve kaçış karakterini desteklemiyor. İyi eski "işe yarıyor yani dokunma". –

+0

Bir mysql etiketi bulunmadan önce çıkarıldı. Bir fikrin neden? –

cevap

4

gibi

şey.

SELECT * INTO OUTFILE 'filename' 
FIELDS TERMINATED BY '|' 
LINES TERMINATED BY '\n' 
FROM yourtable; 

http://dev.mysql.com/doc/refman/5.6/en/select-into.html

+0

Bu bir Sybase veritabanı için değil MYSQL –

+0

Strange ... Daha önce mysql etiketlendi, ancak etiket artık gitti. –

1

bir dosyada çıktı o zaman bu

SELECT * 
INTO OUTFILE 'D://abc.txt' 
FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n' 
FROM table 
burada

I (pencereler AÇIK) yeni bir satırda her satır çıkışı için \r\n kullandık

deneyebilirsiniz isterseniz
+0

Bu Sybase veritabanı için, MySql değil –

1

Sybase ASE için neden, yalnızca bcp yardımcı programını kullanarak ayırıcıyı değiştirmeyin. Tüm sütunları varsayılan olarak yakalar.

bcp MYDATABASE..MYTABLE out MYTABLEFILE.bcp -Uusername -Ppassword -SMYSERVER -c -t| 

Yalnızca 'karakter' (insan okunabilir) bazlı BCP çıkışı belirterek -c seçeneği ile kullanılabilir sütun delimeter, ayarlamak için -t seçeneği kullanmak zorunda. Unix/Linux tabanlı bir sistemdeyseniz, borudan kaçmak zorunda kalabilirsiniz, örn. - \ t