sql >> Base de Datos >  >> RDS >> Oracle

Opciones de formato de SQLcl (Oracle)

Al usar SQLcl para consultar Oracle Database, puede usar SET SQLFORMAT comando para determinar el formato de los resultados.

También puede usar comentarios en línea para especificar el formato directamente desde su consulta.

Por ejemplo, puede utilizar lo siguiente para generar los resultados en formato CSV:

SET SQLFORMAT csv;
SELECT * FROM regions;

O puedes hacerlo así:

SELECT /*csv*/ * FROM regions;

Opciones de formato

Las siguientes opciones se pueden utilizar para especificar el formato de salida:

Opción Descripción
default Borra todo el formato y lo establece en formato de estilo SQL*PLUS. Esta opción solo funciona con SET SQLFORMAT comando.
ansiconsole Formato avanzado basado en datos y tamaño de terminal.
fixed Ancho fijo.
csv Formato separado por comas con cadenas entre comillas dobles (" ).
loader Tubería (| ) formato delimitado con cadenas entre comillas dobles (" ).
delimited Formato CSV con separador opcional, recinto izquierdo y derecho.
text Envía los resultados como texto, sin separadores. Esta opción no está documentada en la HELP opción.
insert Genera SQL INSERT declaraciones de los resultados.
json Formato JSON que coincide con el formato de colección ORDS.
json-formatted Formato JSON que coincide con el formato de la colección ORDS y está bastante impreso. El JSON se presenta en un formato más legible por humanos.
xml Formato XML.
html formato tabular HTML. Genera el código para un documento HTML con una tabla con estilo y una herramienta de búsqueda de JavaScript.

Ejemplos

A continuación se muestran ejemplos para demostrar las opciones anteriores.

default

Borra todo el formato y establece el formato de estilo SQL*PLUS.

SET SQLFORMAT default;
SELECT * FROM regions;

Resultado:

SQL Format Cleared

 REGION_ID REGION_NAME              
---------- -------------------------
         1 Europe                   
         2 Americas                 
         3 Asia                     
         4 Middle East and Africa   

ansiconsole

Formato avanzado basado en datos y tamaño de terminal.

SET SQLFORMAT ansiconsole;
SELECT * FROM regions;

Resultado:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

fixed

Ancho fijo.

SET SQLFORMAT fixed;
SELECT * FROM regions;

Resultado:

"REGION_ID"                   "REGION_NAME"                 
"1"                           "Europe"                      
"2"                           "Americas"                    
"3"                           "Asia"                        
"4"                           "Middle East and Africa"

csv

Formato separado por comas con cadenas entre comillas dobles (" ).

SET SQLFORMAT csv;
SELECT * FROM regions;

Resultado:

"REGION_ID","REGION_NAME"
1,"Europe"
2,"Americas"
3,"Asia"
4,"Middle East and Africa"

loader

Tubería (| ) formato delimitado con cadenas entre comillas dobles (" ).

SET SQLFORMAT loader;
SELECT * FROM regions;

Resultado:

 1|"Europe"|
 2|"Americas"|
 3|"Asia"|
 4|"Middle East and Africa"|

delimited

Formato CSV con separador opcional, recinto izquierdo y derecho. Esto le permite elegir sus propios delimitadores.

SET SQLFORMAT delimited , < >;
SELECT * FROM regions;

Resultado:

<REGION_ID>,<REGION_NAME>
1,<Europe>
2,<Americas>
3,<Asia>
4,<Middle East and Africa>

text

Exhibe los resultados como texto, sin separadores. Esta opción no está documentada en la HELP opción.

SET SQLFORMAT text;
SELECT * FROM regions;

Resultado:

"REGION_ID"null"REGION_NAME"
1null"Europe"
2null"Americas"
3null"Asia"
4null"Middle East and Africa"

insert

Genera SQL INSERT declaraciones de los resultados.

SET SQLFORMAT insert;
SELECT * FROM regions;

Resultado:

REM INSERTING into REGIONS
SET DEFINE OFF;
Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');

json

Formato JSON que coincide con el formato de colección ORDS.

SET SQLFORMAT json;
SELECT * FROM regions;

Resultado:

{"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items":
[
{"region_id":1,"region_name":"Europe"}
,{"region_id":2,"region_name":"Americas"}
,{"region_id":3,"region_name":"Asia"}
,{"region_id":4,"region_name":"Middle East and Africa"}
]}]}

json-formatted

Formato JSON que coincide con el formato de la colección ORDS y está bastante impreso. El JSON se presenta en un formato más legible por humanos.

SET SQLFORMAT json-formatted;
SELECT * FROM regions;

Resultado:

{
  "results" : [
    {
      "columns" : [
        {
          "name" : "REGION_ID",
          "type" : "NUMBER"
        },
        {
          "name" : "REGION_NAME",
          "type" : "VARCHAR2"
        }
      ],
      "items" : [
        {
          "region_id" : 1,
          "region_name" : "Europe"
        },
        {
          "region_id" : 2,
          "region_name" : "Americas"
        },
        {
          "region_id" : 3,
          "region_name" : "Asia"
        },
        {
          "region_id" : 4,
          "region_name" : "Middle East and Africa"
        }
      ]
    }
  ]
}

xml

formato XML.

SET SQLFORMAT xml;
SELECT * FROM regions;

Resultado:

<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>

html

Formato tabular HTML. Genera el código para un documento HTML con una tabla con estilo y una herramienta de búsqueda de JavaScript.

SET SQLFORMAT html;
SELECT * FROM regions;

El código HTML resultante es bastante grande, ya que crea un documento HTML, agrega estilos, JavaScript, etc.

Así es como se ve el HTML resultante cuando se guarda en un .html archivo y renderizado en un navegador:

  • regions.html

Y aquí está el código HTML real que se generó:

<!DOCTYPE html>
<html>

<head>
  <meta charset='UTF-8'>
  
  <title>Result Data</title>
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  
  <style>
  * { 
    margin: 0; 
    padding: 0; 
  }
  body { 
    font: 14px/1.4 Palatino, Serif; 
  }
  
  /* 
  Generic Styling, for Desktops/Laptops 
  */
  table { 
    width: 100%; 
    border-collapse: collapse; 
  }
  /* Zebra striping */
  tr:nth-of-type(odd) { 
    background: #eee; 
  }
  th { 
    background: #333; 
    color: white; 
    font-weight: bold; 
  }
  td, th { 
    padding: 6px; 
    border: 1px solid #9B9B9B; 
    text-align: left; 
  }
  @media 
  only screen and (max-width: 760px),
  (min-device-width: 768px) and (max-device-width: 1024px)  {
    table, thead, tbody, th, td, tr { display: block; }
    thead tr { position: absolute;top: -9999px;left: -9999px;}
    tr { border: 1px solid #9B9B9B; }
    td { border: none;border-bottom: 1px solid #9B9B9B; position: relative;padding-left: 50%; }
    
    td:before { position: absolute;top: 6px;left: 6px;width: 45%; padding-right: 10px; white-space: nowrap;}
    
    /*
    Label the data
    */
td:nth-of-type(1):before { content: "REGION_ID"; }
td:nth-of-type(2):before { content: "REGION_NAME"; }
  }
  
  /* Smartphones (portrait and landscape) ----------- */
  @media only screen
  and (min-device-width : 320px)
  and (max-device-width : 480px) {
    body { 
      padding: 0; 
      margin: 0; 
      width: 320px; }
    }
  
  /* iPads (portrait and landscape) ----------- */
  @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
    body { 
      width: 495px; 
    }
  }
  
  </style>
  <!--<![endif]-->
<script type="text/javascript">

function search(){
  
  var s = document.getElementById('search').value;

  rows = document.getElementById('data').getElementsByTagName('TR');
  for(var i=0;i<rows.length;i++){
    if ( rows[i].textContent.indexOf(s)>0  || s.length==0 ) {
	  rows[i].style.display ='';
    } else {
      rows[i].style.display ='none';
    }
  }
}


var timer;
function delayedSearch() {
	clearTimeout(timer);
	console.log('delay-ing')
    timer = setTimeout(function () {
		console.log('delay-running')
		search();
    }, 500);
  }</script>
</head>

<body>
<div><input type="text" size="30" maxlength="1000" value="" id="search" onkeyup="delayedSearch();" /><input type="button" value="Go" onclick="lsearch();"/> </div>
<table><thead><tr>	<th>REGION_ID</th>
	<th>REGION_NAME</th>
</tr></thead>
<tbody id="data">

	<tr>
<td align="right">1</td>
<td>Europe</td>
	</tr>
	<tr>
<td align="right">2</td>
<td>Americas</td>
	</tr>
	<tr>
<td align="right">3</td>
<td>Asia</td>
	</tr>
	<tr>
<td align="right">4</td>
<td>Middle East and Africa</td>
	</tr>
</tbody></table><!-- SQL:
SELECT * FROM regions--></body></html>