Sqlplus çıktısının bir satırda nasıl görünmesini sağlar?


46

100 sütunlu bir masam var. SQL PlusÇıktıdaki verileri seçerken okunması zorlaşır.

İstediğim şey, ortaya çıkacak yatay bir kaydırma çubuğu ya da bir şekilde çıktıyı less

SQLPlus'ta aşağıdaki ifadeleri çalıştırıyorum -

SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;

Sonra bashkoşarım -

daha az output.txt

Çıktı hala sarılmış ve okunamıyor gibi görünüyor.


1
Ayrıca her biri için sütun boyutunu ayrı ayrı ayarlamak zorunda kalmam yerine, sütunların otomatik olarak genişlemesini istiyorum.
Kshitiz Sharma 29:13

Yanıtlar:


57

Sqlplus'ı çizgileri sarmamaya zorlamak yeterli değildir. İzleyiciye, satırları kaydırmamak için makara dosyasını görüntülemek için kullandığınızı da belirtmeniz gerekir. İzleyiciniz o lesszaman seçenekse, https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less adresine-S göre kullanmak zorundasınız . Unix / Linux'ta , bir dosyanın ilk satırını elde etmek için kullanabilirsiniz ve bunun beklendiği gibi olup olmadığını kontrol edebilir veya satır sonlarının çıktı dosyanızda nereye yerleştirildiğini görmek için kullanabilirsiniz .head -1 output.txtod -c output.txt|head

LONG sütunları görüntülerseniz ve değerleri satır kesmeleri içeriyorsa, bu sütun değerleri için birden fazla satır yazdırılır ve bunu sqlplus ayarlarıyla geçersiz kılamazsınız.


Aşağıdaki sqlplus komutları belki yararlı olabilir:

  • SET LINESIZE linesizeçizginin uzunluğu. Çoğu durumda maksimum değeri linesize32767 Sen geçersiz bir değere LINESIZE ayarlarsanız maksimum değerini bulmak ve hata mesajı böylece kontrol edebilirsiniz olduğu SET LINESIZE 0verebilir SP2-0267: linesize option 0 out of range (1 through 32767) (1)
  • SET TRIMSPOOL ON Aksi takdirde makara dosyasındaki her satır, satır boyutuna ulaşılana kadar boşluklarla doldurulur.
  • SET TRIMOUT ON aksi halde çıktıdaki her satır, satır boyutuna ulaşılana kadar boşluklarla doldurulur.
  • SET WRAP OFFLINESIZE uzunsa çizgiyi keser. Çizgisel boyut yeterince büyükse bu olmamalıdır.
  • SET TERMOUT OFFSonuçların çıktıya yazdırılmasını önler. Satırlar hala biriktirme dosyasına yazılmıştır. Bu, bir ifadenin beklenme süresini çok hızlandırabilir.
  • SET PAGESIZE 0 sonsuz bir sayfa boyutu ayarlamak ve başlıklar, başlıklar vb.
  • SETÇıktı (NUMWIDTH, NUMFORMAT, LONG, COLSEP) ve performans (ARRAYSIZE, LONGCHUNKSIZE) ile ilgili başka parametreler de var .

Tek COLUMNtek sütunları biçimlendirmek için komutu kullanmanız gerekir .

Örneğin çıktıdaki column name format a30sütunu namemaksimum 30 karakter uzunluğunda biçimlendirir .

Ekran boyutunun sabit olmamasını istiyorsanız, ancak bir satırdaki sütunların gerçek değerinin boyutuna eşit olması gerekiyorsa, bildiğim tek yol ifadenizi istediğiniz sonucu elde etmek ve kullanmak için ifadenizin seçim maddesini değiştirmektir. dizi birleştirme işleci ||, örneğin

select emp_id||' '||first_name||' '||last_name
from emp;

Tüm değişkenlerin tam bir açıklaması SQL * Plus Kullanıcı Kılavuzu ve Referans'ta bulunabilir .

Bazı ayarları (veya COLUMN tanımlarını) yeniden kullanmak istiyorsanız, bunları bir dosyada saklayabilir ve tekrar ihtiyacınız olduğunda bu dosyayı çalıştırabilirsiniz. Sqlplus'u başlatırsanız bu dosyayı otomatik olarak bile çalıştırabilirsiniz.

(1) "LINESIZE Maksimum Değeri Nasıl Bulunur (Sistem Bağımlıdır) (Doc ID 1547262.1)"


LONGCHUNKSIZESadece performans ile ilgili değil, istenmeyen hat-sarma önlemek için gerekli gibi görünmektedir ilaveten için LINESIZEsadece gelen kullanışsız çıkışı ile bu deneyler,DBMS_METADATA.get_ddl()
Daniel Verite

2
Güzel cevap ...
ypercubeᵀᴹ

2
What @ YperSillyCubeᵀᴹ dedi :)
Tom V

Sen kullanmalıdır SET PAGESIZE 1000yerine 0"komutlarını SEÇ` verirken baskı olmayacaktır aksi sütunlar başlıklarına. Referans .
Pierre C

@PierreC bu yüzden "Sonsuz bir sayfa boyutu ayarlamak ve başlıklar, başlıklar vb. Önlemek için SET PAGESIZE 0 SET" yazdım.
miracle173

5

Aşağıdakileri ayarlamanız gerekir:

SET WRAP OFF

3
set linesize 30000 SET WRAP OFFbenim için hile yaptım
ren

2

böyle ayarlayabilirsiniz

SET WRAP OFF

SET PAGESIZE 0
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.