Når du bruger SQLcl med Oracle Database, kan du bruge SPOOL kommando for at eksportere dine forespørgselsresultater til en fil med en .html udvidelse, og du kan indstille SQLFORMAT til html for at udlæse de faktiske forespørgselsresultater i HTML-format.
Eksempel
Her er et eksempel til demonstration:
SET SQLFORMAT html;
SPOOL '/Users/barney/data/regions.html';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole; Her er, hvad det gjorde, linje for linje:
- Den første linje sætter
SQLFORMATtilhtml. Dette sikrer, at vores resulterende.htmlfilen indeholder faktisk HTML-kode. - Den anden linje bruger
SPOOLkommando for at angive, hvor outputfilen skal skrives. Sørg for at ændre/Users/barney/data/regions.htmltil en placering på dit system og et passende filnavn. - På den tredje linje kørte jeg SQL-forespørgslen – de resultater, som jeg eksporterer for. I dette tilfælde eksporterede jeg hele
regionstabel. - Dernæst vendte jeg
SPOOLslukket. - Til sidst indstillede jeg
SQLFORMATtilbage til min oprindelige indstilling, som varansiconsole. Dette er valgfrit – du kan efterlade det påjsonhvis du foretrækker det, eller ændre det til noget andet.
Sådan ser den resulterende fil ud:
regions.html
Og her er kildekoden bag den fil:
<!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>
4 rows selected. Så det genererer hele HTML-dokumentet – ikke kun tabellen.
Du vil bemærke, at noget CSS er blevet tilføjet til stylingformål, og JavaScript er blevet tilføjet for at oprette en søgefunktion.
Fjern feedback
Du kan fjerne X rows selected med SET FEEDBACK off :
SET SQLFORMAT html;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.html';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;
I dette tilfælde har jeg slået FEEDBACK igen efter eksport af filen.