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

Exportieren Sie Oracle-Abfrageergebnisse in eine HTML-Datei, wenn Sie SQLcl verwenden

Wenn Sie SQLcl mit Oracle Database verwenden, können Sie den SPOOL verwenden Befehl, um Ihre Abfrageergebnisse in eine Datei mit einem .html zu exportieren Erweiterung, und Sie können SQLFORMAT festlegen nach html um die eigentlichen Abfrageergebnisse im HTML-Format auszugeben.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SET SQLFORMAT html;
SPOOL '/Users/barney/data/regions.html';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;

Hier ist, was es getan hat, Zeile für Zeile:

  • Die erste Zeile setzt SQLFORMAT nach html . Dadurch wird sichergestellt, dass unsere resultierende .html Datei enthält tatsächlich HTML-Code.
  • Die zweite Zeile verwendet den SPOOL Befehl, um anzugeben, wohin die Ausgabedatei geschrieben werden soll. Achten Sie darauf, /Users/barney/data/regions.html zu ändern an einen Speicherort auf Ihrem System und einen entsprechenden Dateinamen.
  • In der dritten Zeile habe ich die SQL-Abfrage ausgeführt – die Ergebnisse, für die ich exportiere. In diesem Fall habe ich die gesamten regions exportiert Tabelle.
  • Als nächstes drehte ich SPOOL aus.
  • Zuletzt setze ich SQLFORMAT zurück zu meiner ursprünglichen Einstellung, die ansiconsole war . Dies ist optional – Sie können es bei json belassen wenn Sie es vorziehen, oder ändern Sie es in etwas anderes.

So sieht die resultierende Datei aus:

  • regions.html

Und hier ist der Quellcode hinter dieser Datei:

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

Es generiert also das gesamte HTML-Dokument – ​​nicht nur die Tabelle.

Sie werden feststellen, dass CSS für Styling-Zwecke hinzugefügt wurde und JavaScript hinzugefügt wurde, um eine Suchfunktion zu erstellen.

Feedback entfernen

Sie können das X rows selected mit 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;

In diesem Fall habe ich mich an FEEDBACK gewandt nach dem Exportieren der Datei wieder einschalten.