sql >> Databáze >  >> RDS >> Oracle

Prevence sqlplus zkrácení názvů sloupců bez formátování jednotlivých sloupců

Jedna věc, kterou můžete zkusit, je dynamicky generovat příkazy "sloupec x formát a20". Něco jako následující:

set termout off
set feedback off

spool t1.sql
select 'column ' || column_name || ' format a' || data_length
from all_tab_cols
where table_name='YOUR_TABLE'
/
spool off

@t1.sql
set pagesize 24
set heading on
spool result.txt
select * 
from  YOUR_TABLE;
and   rownum < 30;
spool off

Všimněte si, že tato ukázka bude fungovat pouze s VARCHAR2. Budete muset přidat dekódování například pro změnu vygenerovaného příkazu "sloupec" pro DATE nebo ČÍSLA.

AKTUALIZACE:Ukázalo se, že původní SQL ve skutečnosti nemění chování SQL*Plus. Jediné, co mě napadlo, je přejmenovat názvy polí na jednoznakové hodnoty A, B, C atd. následujícím způsobem:

select 'column ' || column_name ||
       ' heading "' ||
       chr(ascii('A') - 1 + column_id) ||
       '"'
from all_tab_cols
where table_name='YOUR_TAB_NAME'

Vygeneruje výstup podobný:

column DEPT_NO heading "A"
column NAME heading "B"
column SUPERVIS_ID heading "C"
column ADD_DATE heading "D"
column REPORT_TYPE heading "E"


  1. Příliš pomalá rychlost vkládání Mysql InnoDB?

  2. Sémantika ResultSet#getDate().

  3. Simulace ORDER BY FIELD() MySQL v Postgresql

  4. Pochopení podpory Java pro perzistenci s JPA