Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQLcl-Formatierungsoptionen (Oracle)

Wenn Sie SQLcl zum Abfragen der Oracle-Datenbank verwenden, können Sie SET SQLFORMAT verwenden Befehl, um das Format der Ergebnisse zu bestimmen.

Sie können auch Inline-Kommentare verwenden, um das Format direkt in Ihrer Abfrage anzugeben.

Sie können die Ergebnisse beispielsweise folgendermaßen im CSV-Format ausgeben:

SET SQLFORMAT csv;
SELECT * FROM regions;

Oder Sie können es so machen:

SELECT /*csv*/ * FROM regions;

Formatierungsoptionen

Die folgenden Optionen können verwendet werden, um das Ausgabeformat festzulegen:

Option Beschreibung
default Löscht alle Formatierungen und setzt sie auf die Formatierung im SQL*PLUS-Stil. Diese Option funktioniert nur mit SET SQLFORMAT Befehl.
ansiconsole Erweiterte Formatierung basierend auf Daten und Terminalgröße.
fixed Feste Breite.
csv Komma-getrenntes Format mit Zeichenfolgen in doppelten Anführungszeichen (" ).
loader Pipe (| ) getrenntes Format mit Zeichenfolgen in doppelten Anführungszeichen ("). ).
delimited CSV-Format mit optionalem Trennzeichen, linker und rechter Einfassung.
text Gibt die Ergebnisse als Text ohne Trennzeichen aus. Diese Option ist nicht in der HELP dokumentiert Möglichkeit.
insert Erzeugt SQL INSERT Aussagen aus den Ergebnissen.
json JSON-Format, das dem ORDS-Erfassungsformat entspricht.
json-formatted JSON-Format passend zum ORDS Collection Format und hübsch gedruckt. Der JSON wird in einem besser lesbaren Format dargestellt.
xml XML-Format.
html HTML-Tabellenformat. Generiert den Code für ein HTML-Dokument mit einer Tabelle mit Styling und einem JavaScript-Suchwerkzeug.

Beispiele

Nachfolgend finden Sie Beispiele zur Veranschaulichung der oben genannten Optionen.

default

Löscht alle Formatierungen und setzt sie auf die Formatierung im SQL*PLUS-Stil.

SET SQLFORMAT default;
SELECT * FROM regions;

Ergebnis:

SQL Format Cleared

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

ansiconsole

Erweiterte Formatierung basierend auf Daten und Terminalgröße.

SET SQLFORMAT ansiconsole;
SELECT * FROM regions;

Ergebnis:

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

fixed

Feste Breite.

SET SQLFORMAT fixed;
SELECT * FROM regions;

Ergebnis:

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

csv

Komma-getrenntes Format mit Zeichenfolgen in doppelten Anführungszeichen (" ).

SET SQLFORMAT csv;
SELECT * FROM regions;

Ergebnis:

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

loader

Pipe (| ) getrenntes Format mit Zeichenfolgen in doppelten Anführungszeichen ("). ).

SET SQLFORMAT loader;
SELECT * FROM regions;

Ergebnis:

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

delimited

CSV-Format mit optionalem Trennzeichen, linkem und rechtem Gehäuse. Dadurch können Sie Ihre eigenen Trennzeichen auswählen.

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

Ergebnis:

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

text

Gibt die Ergebnisse als Text ohne Trennzeichen aus. Diese Option ist nicht in der HELP dokumentiert Option.

SET SQLFORMAT text;
SELECT * FROM regions;

Ergebnis:

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

insert

Generiert SQL INSERT Aussagen aus den Ergebnissen.

SET SQLFORMAT insert;
SELECT * FROM regions;

Ergebnis:

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

JSON-Format, das dem ORDS-Erfassungsformat entspricht.

SET SQLFORMAT json;
SELECT * FROM regions;

Ergebnis:

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

JSON-Format passend zum ORDS Collection Format und hübsch gedruckt. Der JSON wird in einem besser lesbaren Format dargestellt.

SET SQLFORMAT json-formatted;
SELECT * FROM regions;

Ergebnis:

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

XML-Format.

SET SQLFORMAT xml;
SELECT * FROM regions;

Ergebnis:

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

HTML-Tabellenformat. Generiert den Code für ein HTML-Dokument mit einer Tabelle mit Stil und einem JavaScript-Suchwerkzeug.

SET SQLFORMAT html;
SELECT * FROM regions;

Der resultierende HTML-Code ist ziemlich groß, da er ein HTML-Dokument erstellt, Stile, JavaScript usw. hinzufügt.

So sieht der resultierende HTML-Code aus, wenn er als .html gespeichert wird Datei und in einem Browser gerendert:

  • regions.html

Und hier ist der eigentliche HTML-Code, der generiert wurde:

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