Oracle SQL Developer'da sorgu sonucunu csv'ye nasıl aktarabilirim?


Yanıtlar:


376

Kullanıyorum Sürüm

alternatif metin

Güncelleme 5 Mayıs 2012

Jeff Smith , SQL Developer'dan CSV çıktısı almak için üstün bir yöntem olduğuna inandığımı gösteren blog yazdı . Jeff'in yöntemi aşağıdaki Yöntem 1 olarak gösterilmiştir:

Yöntem 1

Yorumu /*csv*/SQL sorgunuza ekleyin ve sorguyu komut dosyası olarak çalıştırın (F5 veya çalışma sayfası araç çubuğundaki 2. yürütme düğmesini kullanarak)

resim açıklamasını buraya girin

Bu kadar.

Yöntem 2

Bir sorgu çalıştır

alternatif metin

Sağ tıklayın ve kaldırmayı seçin.

Güncelleme. Sql Developer Version 3.0.04 sürümünde kaldırma kaldırıldı değiştirildi Janis Peisenieks bu işaret için teşekkürler

alternatif metin

SQL Geliştirici Sürüm 3.0.04 için gözden geçirilmiş ekran görüntüsü

resim açıklamasını buraya girin

Biçim açılır menüsünden CSV'yi seçin

alternatif metin

Ve ekrandaki talimatları izleyin.


25
+1. "Boşaltma" terimi bana karşı sezgisel görünüyor. Bazı verileri "yüklemek", veritabanına eklemek anlamına gelir; bu nedenle "Boşaltma" verilerin silineceği anlamına gelecektir ...
Jeffrey Kemp

8
3.0.04 sürümünde bu seçenek Dışa Aktar olarak yeniden adlandırılmıştır.
Janis Peisenieks

2
Harika. ps büyük harf /*CSV*/benim için işe yaramadı, ancak küçük harf işe /*csv*/yaradı. Teşekkürler!
Eran Medan

3
Ayrıca not yöntemi 2 sadece büyük satır sayısı (3K satır ya da öylesine) ile asılı bir hata (hala benim sürüm 3.0.04 mevcut) çalışabilir. Bu eski okul SQLPLUS kullanıyorum çünkü önce yöntem 1'i görmedim, ancak bazıları bunu beğenebilir: {code} SET UNDERLINE OFF SET COLSEP ',' SET LINES 20000 PAGES 20000 SET FEEDBACK kapalı - isteğe bağlı SET HEADING Makara C: \ Export \ EMP.csv --Şimdi EMP'den SELECT * sorgusu; Biriktirme KAPALI
Jim P

1
@topr Yöntem 1'i kullanın, ardından tümünü seçin, kopyalayıp bir metin düzenleyicisine yapıştırın ve csv olarak kaydedin. Hatta doğrudan Excel'e yapıştırabilirsiniz, ancak bundan emin değilim.
Travis

45

Tam olarak "dışa aktarma" değil , dışa aktarmak istediğiniz ızgaradaki satırları (veya Ctrl- Atümünü seçmek için) seçebilir ve ardından Ctrl- ile kopyalayabilirsiniz C.

Varsayılan sekme ile sınırlandırılmıştır. Bunu Excel'e veya başka bir düzenleyiciye yapıştırabilir ve sınırlayıcıları istediğiniz gibi değiştirebilirsiniz.

Ayrıca, kullanırsanız Ctrl- Shift- Cyerine Ctrl- C, ayrıca sütun başlıkları kopyalayacaksınız.


5
harika, özellikle başlıkları kopyalamak için bakıyordu. Teşekkürler!
mishkin

3
Tek sorun, çok sayıda satırınız varsa, bu, tüm veri kümesini tekrar sorgulamak zorunda kalacağı anlamına gelir. ve uzun süren bir sorgu ise, bu, ilk sayfa için çok fazla beklediğiniz ve ctrl + A tuşlarına bastıktan sonra tüm sayfalar için çok beklediğiniz anlamına gelir. başka bir deyişle, harika bir çözümdür, ancak çoğu zaman ve nispeten daha hızlı veya daha küçük sorgular için çalışır.
Eran Medan

Uzun satır sayısı kopyalanan şeyler şerit olacak! Bunu kullanmayın.
Hash

@ Mark bunu hiç görmedim. Sadece ilk 50 satırı mı yoksa böyle bir şeyi mi korudu? Eğer öyleyse bunun için ayrı bir tercih var. Yalnızca şu anda ızgarada bulunanları kopyalar, ancak ızgaranın altına kaydırırsanız SQL Dev otomatik olarak daha fazla satır getirir, böylece birisinin bunu bir hata olarak nasıl yorumlayabileceğini görebilirim.
BQ.

1
43K satır veri üzerinde bunu denedim ve sadece sonsuza kadar çalışır - ihracat seçeneği yolu daha hızlı. Sadece birkaç satır veri varsa bu harika.
izikandrw

28

Bilginize, ve /*csv*/ de dahil olmak üzere diğer biçimlerin yerine kullanabilirsiniz . select , örneğin sorgu sonuçlarını içeren bir xml belgesi döndürür. Bir sorgudan xml döndürmek için kolay bir yol ararken bu makaleye rastladım./*xml*//*html*//*xml*/ * from emp


4
/ * insert * / özellikle kullanışlıdır.
jeremyjjbrown

Dosyalar nereye gidiyor?
Anomali

Ah umursamıyorum, "komut dosyası olarak çalıştır" kısmı üzerinde glossed, bunun her zamanki çalıştırma düğmesinden farklı olduğunu fark etmedi.
Anomali

4

Sorunlarla karşılaşan herkese FYI, CSV zaman damgası ihracatında sadece birkaç saat çalıştığım bir hata var. Dışa aktarmam gereken bazı alanlar tür zaman damgasıydı. Geçerli sürümde (bu kayıttan itibaren 3.0.04) gruplama simgelerini zaman damgalarının etrafına yerleştiremediğinde bile CSV dışa aktarma seçeneği görünür. Zaman damgalarındaki boşluklar ithalatımı kırdığı için çok sinir bozucu. Bulduğum en iyi çözüm, tüm zaman damgalarımda bir TO_CHAR () ile sorgumu yazmaktı, bu da biraz daha fazla çalışma olsa da doğru çıktıyı verdi. Umarım bu biraz zaman kazandırır veya bir sonraki sürümüyle Oracle'ı topa alır.


1
Benim sürüm 3.0.04 hala sadece daha büyük ihracat ile asılı bir hata var (benimki 3K satır). Benim basit düzeltme yerine SQLPLUS kullanmak oldu:
Jim P

Benim durumumda, Uzamsal Veri Türü ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/… ) MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)tırnak içine alınmadan bu şekilde (virgüllere dikkat edin) ihraç ediliyordu. Ve dinamik SQL kullanıyorum, bu yüzden bu sütunları TO_CHAR () yapamam. Baska öneri?
Kırmızı Bezelye

Dinamik SQL kullanıyorum ve sadece * seçsem bile (ve bunu Uzamsal veri türlerinin tek bir SQL sütunu için bir istisna için değiştirmek istemiyorum), belki iki şey deneyebilirim: 1) Farklı bir COLSEP kullanın '|' veya 2) SELECT ifadesinden önce, bu sütunun docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
The Red Pea

2

Sql geliştiricisinden yerel sisteminize dışa aktarmak için.

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

CSV Dışa Aktarma verilerinizden kaçmaz. \Sonuçta ortaya çıkan dizeler için dikkat edin, çünkü sonuç \", "a değil, bir kaçan gibi görünecektir \. Sonra yanlış sayıda var "ve tüm satır kırık.


Bu muhtemelen bir hata değildir - tırnak işaretlerinin nasıl kaçtığına karar verebilirsiniz ve varsayılan değer, ters eğik çizgi ile değil, başka bir alıntı karakteriyle kaçmaktır. Bu durumda, "foo\"tamamen geçerli bir alıntı dizgidir.
Ken Williams

Önceden biliyorsanız, \ 'nin her oluşumunu \\ ile değiştirmek yeterince basittir. Teşekkürler!
jpaugh

Evet, çoğu CSV içe aktarma aracı için yeterince basit ve muhtemelen yanlış.
Wormbo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.