sql >> Database teknologi >  >> RDS >> Oracle

Forhindrer sqlplus trunkering af kolonnenavne uden individuel kolonneformatering

En ting du kan prøve er dynamisk at generere kommandoer i "kolonne x format a20". Noget i stil med følgende:

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

Bemærk, at denne prøve kun fungerer med VARCHAR2. Du skal tilføje afkodning for f.eks. at ændre den genererede "kolonne"-kommando for DATOER eller NUMMER.

OPDATERING:Det viser sig, at den originale SQL ikke rigtig ændrer adfærden for SQL*Plus. Det eneste, jeg kunne komme i tanke om, er at omdøbe feltnavnene til en karakterværdi A, B, C osv.. på følgende måde:

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

Det vil generere output svarende til:

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. Pivottabeller PHP/MySQL

  2. Sådan sikkerhedskopieres MySQL-databaser ved hjælp af cron-job

  3. MySQL:Sådan finder du blade i en bestemt node

  4. SQL-tutorial:One Stop-løsning til at lære SQL