Oracle
 sql >> Base de données >  >> RDS >> Oracle

Options de formatage SQLcl (Oracle)

Lorsque vous utilisez SQLcl pour interroger la base de données Oracle, vous pouvez utiliser le SET SQLFORMAT commande pour déterminer le format des résultats.

Vous pouvez également utiliser des commentaires intégrés pour spécifier le format directement dans votre requête.

Par exemple, vous pouvez utiliser ce qui suit pour générer les résultats au format CSV :

SET SQLFORMAT csv;
SELECT * FROM regions;

Ou vous pouvez le faire comme ceci :

SELECT /*csv*/ * FROM regions;

Options de formatage

Les options suivantes peuvent être utilisées pour spécifier le format de sortie :

Option Description
default Efface tout le formatage et le définit sur le formatage de style SQL*PLUS. Cette option ne fonctionne qu'avec le SET SQLFORMAT commande.
ansiconsole Formatage avancé basé sur les données et la taille du terminal.
fixed Largeur fixe.
csv Format séparé par des virgules avec des chaînes entre guillemets doubles (" ).
loader Tuyau (| ) format délimité avec des chaînes entre guillemets doubles (" ).
delimited Format CSV avec séparateur facultatif, enceinte gauche et droite.
text Affiche les résultats sous forme de texte, sans séparateurs. Cette option n'est pas documentée dans l'HELP option.
insert Génère SQL INSERT déclarations à partir des résultats.
json Format JSON correspondant au format de collection ORDS.
json-formatted Format JSON correspondant au format de collection ORDS et joliment imprimé. Le JSON est présenté dans un format plus lisible par l'homme.
xml Format XML.
html Format tabulaire HTML. Génère le code d'un document HTML avec un tableau avec style et un outil de recherche JavaScript.

Exemples

Vous trouverez ci-dessous des exemples pour illustrer les options ci-dessus.

default

Efface tout le formatage et le définit sur le formatage de style SQL*PLUS.

SET SQLFORMAT default;
SELECT * FROM regions;

Résultat :

SQL Format Cleared

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

ansiconsole

Formatage avancé basé sur les données et la taille du terminal.

SET SQLFORMAT ansiconsole;
SELECT * FROM regions;

Résultat :

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

fixed

Largeur fixe.

SET SQLFORMAT fixed;
SELECT * FROM regions;

Résultat :

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

csv

Format séparé par des virgules avec des chaînes entre guillemets doubles (" ).

SET SQLFORMAT csv;
SELECT * FROM regions;

Résultat :

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

loader

Tuyau (| ) format délimité avec des chaînes entre guillemets doubles (" ).

SET SQLFORMAT loader;
SELECT * FROM regions;

Résultat :

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

delimited

Format CSV avec séparateur en option, boîtier gauche et droit. Cela vous permet de choisir vos propres délimiteurs.

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

Résultat :

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

text

Affiche les résultats sous forme de texte, sans séparateurs. Cette option n'est pas documentée dans l'HELP option.

SET SQLFORMAT text;
SELECT * FROM regions;

Résultat :

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

insert

Génère SQL INSERT déclarations à partir des résultats.

SET SQLFORMAT insert;
SELECT * FROM regions;

Résultat :

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

Format JSON correspondant au format de collection ORDS.

SET SQLFORMAT json;
SELECT * FROM regions;

Résultat :

{"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

Format JSON correspondant au format de collection ORDS et joli imprimé. Le JSON est présenté dans un format plus lisible par l'homme.

SET SQLFORMAT json-formatted;
SELECT * FROM regions;

Résultat :

{
  "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

Format XML.

SET SQLFORMAT xml;
SELECT * FROM regions;

Résultat :

<?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

Format tabulaire HTML. Génère le code d'un document HTML avec un tableau avec style et un outil de recherche JavaScript.

SET SQLFORMAT html;
SELECT * FROM regions;

Le code HTML résultant est assez volumineux, car il crée un document HTML, ajoute des styles, JavaScript, etc.

Voici à quoi ressemble le code HTML résultant lorsqu'il est enregistré dans un .html fichier et rendu dans un navigateur :

  • regions.html

Et voici le code HTML réel qui a été généré :

<!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>