Używając SQLcl do tworzenia zapytań do bazy danych Oracle, możesz użyć SET SQLFORMAT
polecenie, aby określić format wyników.
Możesz także użyć wbudowanych komentarzy, aby określić format bezpośrednio w zapytaniu.
Na przykład możesz użyć poniższego, aby wyprowadzić wyniki w formacie CSV:
SET SQLFORMAT csv;
SELECT * FROM regions;
Lub możesz to zrobić w ten sposób:
SELECT /*csv*/ * FROM regions;
Opcje formatowania
Do określenia formatu wyjściowego można użyć następujących opcji:
Opcja | Opis |
---|---|
default | Czyści całe formatowanie i ustawia je na formatowanie w stylu SQL*PLUS. Ta opcja działa tylko z SET SQLFORMAT polecenie. |
ansiconsole | Zaawansowane formatowanie oparte na danych i rozmiarze terminala. |
fixed | Stała szerokość. |
csv | Format oddzielony przecinkami z ciągami ujętymi w podwójne cudzysłowy (" ). |
loader | Rura (| ) format rozdzielany z ciągami ujętymi w podwójne cudzysłowy (" ). |
delimited | Format CSV z opcjonalnym separatorem, lewą i prawą obudową. |
text | Wyprowadza wyniki jako tekst, bez separatorów. Ta opcja nie jest udokumentowana w HELP opcja. |
insert | Generuje SQL INSERT oświadczenia z wyników. |
json | Format JSON zgodny z formatem kolekcji ORDS. |
json-formatted | Format JSON zgodny z formatem kolekcji ORDS i ładnie wydrukowany. JSON jest prezentowany w formacie bardziej czytelnym dla człowieka. |
xml | Format XML. |
html | format tabelaryczny HTML. Generuje kod dla dokumentu HTML z tabelą ze stylami i narzędziem wyszukiwania JavaScript. |
Przykłady
Poniżej znajdują się przykłady demonstrujące powyższe opcje.
default
Czyści całe formatowanie i ustawia je na formatowanie w stylu SQL*PLUS.
SET SQLFORMAT default;
SELECT * FROM regions;
Wynik:
SQL Format Cleared REGION_ID REGION_NAME ---------- ------------------------- 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
ansiconsole
Zaawansowane formatowanie oparte na danych i rozmiarze terminala.
SET SQLFORMAT ansiconsole;
SELECT * FROM regions;
Wynik:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
fixed
Stała szerokość.
SET SQLFORMAT fixed;
SELECT * FROM regions;
Wynik:
"REGION_ID" "REGION_NAME" "1" "Europe" "2" "Americas" "3" "Asia" "4" "Middle East and Africa"
csv
Format oddzielony przecinkami z ciągami ujętymi w podwójne cudzysłowy ("
).
SET SQLFORMAT csv;
SELECT * FROM regions;
Wynik:
"REGION_ID","REGION_NAME" 1,"Europe" 2,"Americas" 3,"Asia" 4,"Middle East and Africa"
loader
Potok (|
) format rozdzielany z ciągami ujętymi w podwójne cudzysłowy ("
).
SET SQLFORMAT loader;
SELECT * FROM regions;
Wynik:
1|"Europe"| 2|"Americas"| 3|"Asia"| 4|"Middle East and Africa"|
delimited
Format CSV z opcjonalnym separatorem, lewą i prawą obudową. Dzięki temu możesz wybrać własne ograniczniki.
SET SQLFORMAT delimited , < >;
SELECT * FROM regions;
Wynik:
<REGION_ID>,<REGION_NAME> 1,<Europe> 2,<Americas> 3,<Asia> 4,<Middle East and Africa>
text
Wyprowadza wyniki jako tekst, bez separatorów. Ta opcja nie jest udokumentowana w HELP
opcja.
SET SQLFORMAT text;
SELECT * FROM regions;
Wynik:
"REGION_ID"null"REGION_NAME" 1null"Europe" 2null"Americas" 3null"Asia" 4null"Middle East and Africa"
insert
Generuje SQL INSERT
oświadczenia z wyników.
SET SQLFORMAT insert;
SELECT * FROM regions;
Wynik:
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 zgodny z formatem kolekcji ORDS.
SET SQLFORMAT json;
SELECT * FROM regions;
Wynik:
{"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 pasujący do formatu kolekcji ORDS i ładnie wydrukowany. JSON jest prezentowany w formacie bardziej czytelnym dla człowieka.
SET SQLFORMAT json-formatted;
SELECT * FROM regions;
Wynik:
{ "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;
Wynik:
<?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 tabelaryczny HTML. Generuje kod dla dokumentu HTML z tabelą ze stylami i wyszukiwarką JavaScript.
SET SQLFORMAT html;
SELECT * FROM regions;
Wynikowy kod HTML jest dość duży, ponieważ tworzy dokument HTML, dodaje style, JavaScript itp.
Oto, jak wygląda wynikowy kod HTML po zapisaniu w pliku .html
plik i renderowany w przeglądarce:
regions.html
A oto rzeczywisty wygenerowany kod HTML:
<!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>