Lorsque vous utilisez SQLcl avec Oracle Database, vous pouvez utiliser le SPOOL
commande pour exporter les résultats de votre requête vers un fichier avec un .html
extension, et vous pouvez définir SQLFORMAT
en html
afin de générer les résultats réels de la requête au format HTML.
Exemple
Voici un exemple pour illustrer :
SET SQLFORMAT html;
SPOOL '/Users/barney/data/regions.html';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;
Voici ce qu'il a fait, ligne par ligne :
- La première ligne définit
SQLFORMAT
enhtml
. Cela garantit que notre.html
résultant le fichier contient en fait du code HTML. - La deuxième ligne utilise le
SPOOL
commande pour spécifier où le fichier de sortie sera écrit. Assurez-vous de modifier/Users/barney/data/regions.html
à un emplacement sur votre système et un nom de fichier approprié. - Sur la troisième ligne, j'ai exécuté la requête SQL - les résultats pour lesquels j'exporte. Dans ce cas, j'ai exporté l'ensemble des
regions
tableau. - Ensuite, j'ai tourné
SPOOL
éteint. - Enfin, j'ai défini
SQLFORMAT
retour à mon paramètre d'origine, qui étaitansiconsole
. Ceci est facultatif - vous pouvez le laisser àjson
si vous préférez, ou remplacez-le par autre chose.
Voici à quoi ressemble le fichier résultant :
regions.html
Et voici le code source derrière ce fichier :
<!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.
Ainsi, il génère tout le document HTML - pas seulement le tableau.
Vous remarquerez que certains CSS ont été ajoutés à des fins de style et que JavaScript a été ajouté pour créer une fonction de recherche.
Supprimer les commentaires
Vous pouvez supprimer le X rows selected
avec 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;
Dans ce cas, j'ai activé FEEDBACK
de nouveau après l'exportation du fichier.