sql >> Databasteknik >  >> RDS >> Oracle

Förhindrar sqlplus trunkering av kolumnnamn, utan individuell kolumnformatering

En sak du kan prova är att dynamiskt generera kommandon "kolumn x format a20". Något i stil med följande:

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

Observera att detta exempel bara fungerar med VARCHAR2. Du skulle behöva lägga till avkodning till exempel för att ändra det genererade "kolumn"-kommandot för DATUM eller NUMMER.

UPPDATERING:Det visar sig att den ursprungliga SQL inte riktigt ändrar beteendet hos SQL*Plus. Det enda jag kunde komma på är att döpa om fältnamnen till ett teckens värden A, B, C, etc.. på följande sätt:

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

Det kommer att generera utdata som liknar:

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. Jämför textskillnader mellan två nästan identiska rader/tabeller i MySql

  2. MySQL MAX_JOIN_SIZE fel

  3. Efter MySQL-installation via Brew får jag felet - Servern avslutades utan att uppdatera PID-filen

  4. Genomgång:Konfigurera SQL Server High Availability