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ànhhtml
. Đ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ạijson
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.