使用 PowerShell - sqlplus 命令以 table 格式显示数据库值
Display DB value in table format using PowerShell - sqlplus command
我需要编写查询以使用 PowerShell 脚本(sqlplus 命令)以表格格式显示数据库中的多行。
数据库:Oracle 12c
我写了下面的查询,但它 returns 单行值。我怎样才能得到所有的数据?我不明白如何实现 for 循环来访问所有行。
预期输出:
脚本:
$username='root'
$password='password'
$tnsalias='localhost:1521/xe'
$sql1=@"
set echo off;
set pagesize 0
set head off;
set feedback off;
set pause off;
set verify off;
set trimspool on;
set linesize 300;
set colsep ,;
set termout off;
SELECT * FROM employees where dept_id =30;
"@
$output1 = $sql1 |sqlplus -silent $username/$password@$tnsalias
$output2 =$output1.Split(",")
$eid=$output2[0]
$first_nm=$output2[1]
$middl_nm=$output2[2]
$last_nm=$output2[3]
$sal= $output2[4]
$HtmlTable3 += "<tr style='font-size:13px;background-color:#FFFFFF'>
<td>"+ $eid +"</td>
<td>" + $first_nm + "</td>
<td>"+ $middl_nm +"</td>
<td>"+ $last_nm+"</td>
<td>"+ $sal +"</td>
</tr> "
$HtmlTable3 +="</table> </div>"
write-host $HtmlTable3
如何将 HTML 标签转移到 SQL - 比如:
$username='scott'
$password='tiger'
$tnsalias='foo:12102/DB1212'
$sql1=@"
set echo off;
set pagesize 0
set head off;
set feedback off;
set pause off;
set verify off;
set trimspool on;
set linesize 300;
set colsep ,;
set termout off;
SELECT
'<tr style="font-size:13px;background-color:#FFFFFF">'||
'<td>'||empno||'</td>'
||'<td>'||ename||'</td>'
||'<td>'||job||'</td>'
||'<td>'||mgr||'</td>'
||'<td>'||hiredate||'</td>'
||'<td>'||sal||'</td>'
||'<td>'||comm||'</td>'
||'<td>'||deptno||'</td>'
||'</tr>'
FROM EMP where DEPTNO=30;
"@
$output1 = $sql1 |sqlplus -silent $username/$password@$tnsalias
$HtmlTable3 += "<table>"
$HtmlTable3 += $output1
$HtmlTable3 += "</table>"
write-host $HtmlTable3
回归
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7900 JAMES CLERK 7698 03-DEC-81 950 30
我需要编写查询以使用 PowerShell 脚本(sqlplus 命令)以表格格式显示数据库中的多行。
数据库:Oracle 12c
我写了下面的查询,但它 returns 单行值。我怎样才能得到所有的数据?我不明白如何实现 for 循环来访问所有行。
预期输出:
脚本:
$username='root'
$password='password'
$tnsalias='localhost:1521/xe'
$sql1=@"
set echo off;
set pagesize 0
set head off;
set feedback off;
set pause off;
set verify off;
set trimspool on;
set linesize 300;
set colsep ,;
set termout off;
SELECT * FROM employees where dept_id =30;
"@
$output1 = $sql1 |sqlplus -silent $username/$password@$tnsalias
$output2 =$output1.Split(",")
$eid=$output2[0]
$first_nm=$output2[1]
$middl_nm=$output2[2]
$last_nm=$output2[3]
$sal= $output2[4]
$HtmlTable3 += "<tr style='font-size:13px;background-color:#FFFFFF'>
<td>"+ $eid +"</td>
<td>" + $first_nm + "</td>
<td>"+ $middl_nm +"</td>
<td>"+ $last_nm+"</td>
<td>"+ $sal +"</td>
</tr> "
$HtmlTable3 +="</table> </div>"
write-host $HtmlTable3
如何将 HTML 标签转移到 SQL - 比如:
$username='scott'
$password='tiger'
$tnsalias='foo:12102/DB1212'
$sql1=@"
set echo off;
set pagesize 0
set head off;
set feedback off;
set pause off;
set verify off;
set trimspool on;
set linesize 300;
set colsep ,;
set termout off;
SELECT
'<tr style="font-size:13px;background-color:#FFFFFF">'||
'<td>'||empno||'</td>'
||'<td>'||ename||'</td>'
||'<td>'||job||'</td>'
||'<td>'||mgr||'</td>'
||'<td>'||hiredate||'</td>'
||'<td>'||sal||'</td>'
||'<td>'||comm||'</td>'
||'<td>'||deptno||'</td>'
||'</tr>'
FROM EMP where DEPTNO=30;
"@
$output1 = $sql1 |sqlplus -silent $username/$password@$tnsalias
$HtmlTable3 += "<table>"
$HtmlTable3 += $output1
$HtmlTable3 += "</table>"
write-host $HtmlTable3
回归
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7900 JAMES CLERK 7698 03-DEC-81 950 30