我正在尝试从oracle数据库表中获取数据到Excel工作表。 下面是用powershell编写的代码。
活动序列连接到数据库,将数据假脱机到一个变量中,然后将其推入Excel。 问题是我无法从数据库表中获取 column标头。我尝试了set语句的各种组合,但似乎没有一种适合我。 该数据库是Oracle 11g Express Edition。
$sqlQuery=@"
set heading on
set colsep '|'
set pagesize 0
set feedback off
select * From countries
where rownum<4;
"@
$output=$sqlQuery |sqlplus -silent hr/hr@localhost:1521/xe
$rows =$output.Length
$cols = $output[0].Split('|').Length
$excel = New-Object -ComObject Excel.Application
$excel.Visible =$true
$excel.Workbooks.Add()
$workbook=$excel.ActiveWorkbook
$worksheet=$workbook.Worksheets.Item(1)
for($i=0;$i -lt $rows;$i++) {
$rowdata = $output[$i].split('|')
for($j=0;$j -lt $cols;$j++) {
$worksheet.Cells.Item($i+1,$j+1)=$rowdata[$j]
}
}
在删除set pagesize 0
之后,下面是我在excel中获得的输出。
答案 0 :(得分:0)
删除SET PAGESIZE 0
,不会引起标题影响。
这可以:
SQL> select * From dept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
但是,当您set pagesize 0
...没有标题时:
SQL> set pagesize 0
SQL> select * From dept;
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>