sql >> Databasteknik >  >> RDS >> Oracle

SQLcl-formateringsalternativ (Oracle)

När du använder SQLcl för att fråga Oracle Database kan du använda SET SQLFORMAT kommando för att bestämma formatet för resultaten.

Du kan också använda infogade kommentarer för att ange formatet direkt i din fråga.

Du kan till exempel använda följande för att mata ut resultaten i CSV-format:

SET SQLFORMAT csv;
SELECT * FROM regions;

Eller så kan du göra så här:

SELECT /*csv*/ * FROM regions;

Formateringsalternativ

Följande alternativ kan användas för att ange utdataformat:

Alternativ Beskrivning
default Rensar all formatering och ställer in den på SQL*PLUS-formatering. Det här alternativet fungerar bara med SET SQLFORMAT kommando.
ansiconsole Avancerad formatering baserat på data och terminalstorlek.
fixed Fast bredd.
csv Kommaseparerat format med strängar omslutna av dubbla citattecken (" ).
loader Rör (| ) avgränsat format med strängar omslutna av dubbla citattecken (" ).
delimited CSV-format med valfri separator, vänster och höger hölje.
text Matar ut resultaten som text, utan separatorer. Det här alternativet finns inte dokumenterat i HELP alternativ.
insert Genererar SQL INSERT uttalanden från resultaten.
json JSON-format som matchar ORDS Collection Format.
json-formatted JSON-format som matchar ORDS Collection Format och snyggt tryckt. JSON presenteras i ett mer mänskligt läsbart format.
xml XML-format.
html HTML-tabellformat. Genererar koden för ett HTML-dokument med en tabell med stil och ett JavaScript-sökverktyg.

Exempel

Nedan finns exempel för att visa alternativen ovan.

default

Rensar all formatering och ställer in den på SQL*PLUS-formatering.

SET SQLFORMAT default;
SELECT * FROM regions;

Resultat:

SQL Format Cleared

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

ansiconsole

Avancerad formatering baserad på data och terminalstorlek.

SET SQLFORMAT ansiconsole;
SELECT * FROM regions;

Resultat:

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

fixed

Fast bredd.

SET SQLFORMAT fixed;
SELECT * FROM regions;

Resultat:

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

csv

Kommaseparerat format med strängar omslutna av dubbla citattecken (" ).

SET SQLFORMAT csv;
SELECT * FROM regions;

Resultat:

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

loader

Pipe (| ) avgränsat format med strängar omslutna av dubbla citattecken (" ).

SET SQLFORMAT loader;
SELECT * FROM regions;

Resultat:

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

delimited

CSV-format med valfri separator, vänster och höger hölje. Detta gör att du kan välja dina egna avgränsare.

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

Resultat:

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

text

Matar ut resultaten som text, utan separatorer. Det här alternativet finns inte dokumenterat i HELP alternativ.

SET SQLFORMAT text;
SELECT * FROM regions;

Resultat:

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

insert

Genererar SQL INSERT uttalanden från resultaten.

SET SQLFORMAT insert;
SELECT * FROM regions;

Resultat:

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 som matchar ORDS Collection Format.

SET SQLFORMAT json;
SELECT * FROM regions;

Resultat:

{"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 som matchar ORDS Collection Format och snyggt tryckt. JSON presenteras i ett mer mänskligt läsbart format.

SET SQLFORMAT json-formatted;
SELECT * FROM regions;

Resultat:

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

Resultat:

<?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-tabellformat. Genererar koden för ett HTML-dokument med en tabell med stil och ett JavaScript-sökverktyg.

SET SQLFORMAT html;
SELECT * FROM regions;

Den resulterande HTML-koden är ganska stor, eftersom den skapar ett HTML-dokument, lägger till stilar, JavaScript, etc.

Så här ser den resulterande HTML-koden ut när den sparas i en .html fil och renderad i en webbläsare:

  • regions.html

Och här är den faktiska HTML-koden som genererades:

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

  1. Hur du snabbar upp din SQL-server med hjälp av databasprestandaövervakning

  2. Ordna genom att använda en parameter för kolumnnamnet

  3. Villkorlig aggregeringsprestanda

  4. Hur man skriver en Pandas Dataframe till Django-modell