sql >> Databasteknik >  >> RDS >> Oracle

Exportera Oracle-frågeresultat till en HTML-fil när du använder SQLcl

När du använder SQLcl med Oracle Database kan du använda SPOOL kommando för att exportera dina frågeresultat till en fil med en .html tillägg, och du kan ställa in SQLFORMAT till html för att mata ut de faktiska frågeresultaten i HTML-format.

Exempel

Här är ett exempel att visa:

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

Så här gjorde den rad för rad:

  • Den första raden anger SQLFORMAT till html . Detta säkerställer att vår resulterande .html filen innehåller faktiskt HTML-kod.
  • Den andra raden använder SPOOL kommando för att ange var utdatafilen ska skrivas. Se till att ändra /Users/barney/data/regions.html till en plats på ditt system och ett lämpligt filnamn.
  • På den tredje raden körde jag SQL-frågan – resultaten för vilka jag exporterar. I det här fallet exporterade jag hela regions tabell.
  • Närnäst vände jag till SPOOL av.
  • Sistligen ställer jag in SQLFORMAT tillbaka till min ursprungliga inställning, som var ansiconsole . Detta är valfritt – du kan lämna det på json om du föredrar det, eller ändra det till något annat.

Så här ser den resulterande filen ut:

  • regions.html

Och här är källkoden bakom den filen:

<!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 genererar hela HTML-dokumentet – inte bara tabellen.

Du kommer att märka att en del CSS har lagts till för stylingändamål, och JavaScript har lagts till för att skapa en sökfunktion.

Ta bort feedback

Du kan ta bort 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 det här fallet vände jag till FEEDBACK igen efter att ha exporterat filen.


  1. Jämför PHP-databasabstraktionslager och CRUD-plugins

  2. Transaktionsloggen för databasen är full

  3. Migrerar alla till molnet?

  4. Asynkrona uppgifter med Django och selleri