sql >> Database teknologi >  >> RDS >> Oracle

Eksporter Oracle-forespørgselsresultater til en HTML-fil, når du bruger SQLcl

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 SQLFORMAT til html . Dette sikrer, at vores resulterende .html filen indeholder faktisk HTML-kode.
  • Den anden linje bruger SPOOL kommando for at angive, hvor outputfilen skal skrives. Sørg for at ændre /Users/barney/data/regions.html til 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 regions tabel.
  • Dernæst vendte jeg SPOOL slukket.
  • Til sidst indstillede jeg SQLFORMAT tilbage til min oprindelige indstilling, som var ansiconsole . Dette er valgfrit – du kan efterlade det på json hvis 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.


  1. Hvad er SQL, og hvordan kommer man i gang med det?

  2. MySQL-indekser - hvad er den bedste praksis?

  3. Hvordan YEARWEEK() fungerer i MariaDB

  4. Fordele ved NoSQL-databaser – Alt hvad du behøver at vide