Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xuất kết quả truy vấn Oracle sang tệp HTML khi sử dụng SQLcl

Khi sử dụng SQLcl với Cơ sở dữ liệu Oracle, bạn có thể sử dụng SPOOL lệnh xuất kết quả truy vấn của bạn sang một tệp có .html và bạn có thể đặt SQLFORMAT thành html để xuất ra kết quả truy vấn thực tế ở định dạng HTML.

Ví dụ

Dưới đây là một ví dụ để chứng minh:

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

Đây là những gì nó đã làm, từng dòng một:

  • Dòng đầu tiên đặt SQLFORMAT thành html . Điều này đảm bảo rằng .html kết quả của chúng tôi thực tế tệp có chứa mã HTML.
  • Dòng thứ hai sử dụng SPOOL lệnh để chỉ định nơi tệp đầu ra sẽ được ghi. Đảm bảo thay đổi /Users/barney/data/regions.html đến một vị trí trên hệ thống của bạn và một tên tệp thích hợp.
  • Trên dòng thứ ba, tôi đã chạy truy vấn SQL - kết quả mà tôi đang xuất. Trong trường hợp này, tôi đã xuất toàn bộ regions bảng.
  • Tiếp theo, tôi đã chuyển SPOOL tắt.
  • Cuối cùng, tôi đặt SQLFORMAT quay lại cài đặt ban đầu của tôi, đó là ansiconsole . Đây là tùy chọn - bạn có thể để nó tại json nếu bạn thích hoặc thay đổi nó thành thứ khác.

Đây là tệp kết quả trông như thế nào:

  • regions.html

Và đây là mã nguồn đằng sau tệp đó:

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

Vì vậy, nó tạo ra toàn bộ tài liệu HTML - không chỉ bảng.

Bạn sẽ nhận thấy rằng một số CSS đã được thêm vào cho mục đích tạo kiểu và JavaScript đã được thêm vào để tạo chức năng tìm kiếm.

Xóa phản hồi

Bạn có thể xóa X rows selected khi tắt 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;

Trong trường hợp này, tôi đã chuyển FEEDBACK quay lại sau khi xuất tệp.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL / SQL lấy IP v4 của máy chủ?

  2. Hướng dẫn từng bước để cài đặt hộp ảo Oracle

  3. Oracle - chữ không khớp với lỗi chuỗi định dạng

  4. Oracle:trình tự MySequence.currval chưa được xác định trong phiên này

  5. Chuyển đổi Long sang Varchar2