如何从Oracle数据库中提取表头到Excel

时间:2019-03-07 04:53:47

标签: excel oracle powershell oracle11g sqlplus

我正在尝试从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]
    }

}

enter image description here

在删除set pagesize 0之后,下面是我在excel中获得的输出。

enter image description here

1 个答案:

答案 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>