日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

exp导出excel oracle_如何从Oracle快速导出数据到Excel

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 exp导出excel oracle_如何从Oracle快速导出数据到Excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【摘要】

在生產系統使用過程中,常常會有從數據庫中導出數據的需求。支持多種導出方式,例如使用spool、utl_file等內置方法導出,利用plsql developer、等第三方工具等。

【正文】

Oracle支持多種導出方式,包括自帶的工具包和第三方工具。不同工具有各自的適用場景,這里對常見的四種方案進行簡要分析:

一利用utl_file將執行結果導出為.csv文件

1.1方法描述

使用流程:

1、定義字段列表(根據實際情況增減字段);

2、定義目錄對象(如果沒有,需要先通過create directory創建);

3、定義輸出文件名稱(不用寫文件后綴名);

4、定義輸出表格標題(可自定義顯示的字段名);

5、設置執行的

6、映射字段列表(依次給字段賦值);

7、輸出每一行數據。

1.2操作演示

這里演示如何通過sqlplus工具將指定SQL語句的執行結果導出到.csv文件。

指定SQL:

select

OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from

dba_objects;

說明:

dba_objects包含18萬行數據。

腳本內容:

--腳本內容開始---

--會話設置

SET

SERVEROUT ON;--打開輸出提示

SET

TIMING ON;--打開計時器

--定義變量

DECLARE

DIRPATHVARCHAR2(4000);--目錄對象

OUTFILEVARCHAR2(4000);--輸出文件名稱

VSFILEUTL_FILE.FILE_TYPE; --定義用于接收文件句柄的類型

V_CNTNUMBER;--統計每個文件加載行數

--定義字段列表

--根據實際情況增減字段,為了方便,可以采用Cn的定義方式,n為查詢結果的列數

C1VARCHAR2(4000);

C2VARCHAR2(4000);

C3VARCHAR2(4000);

C4VARCHAR2(4000);

C5VARCHAR2(4000);

C6VARCHAR2(4000);

BEGIN

--設置dbms_output輸出的緩沖大小

--DBMS_OUTPUT.ENABLE(1000000); -->避免報錯ORA-20000:

ORU-10027: BUFFER OVERFLOW, LIMIT OF 10000 BYTES

--定義目錄對象

DIRPATH:= 'EXPDATA'; --這里對應OS上的目錄“D:\expdata”

--定義輸出文件名稱

OUTFILE:= 'dba_objects';

--開始打開文件,這里使用DIRECTORY參數指定輸出文件的存放位置

VSFILE := UTL_FILE.FOPEN(DIRPATH, OUTFILE ||

'.CSV', 'W');

/*參數介紹:

UTL_FILE.FOPEN(LOCATION IN VARCHAR2, FILENAME

IN VARCHAR2, OPEN_MODE IN VARCHAR2) RETURN FILE_TYPE;

LOCATION是文件存放的DB目錄名稱,-------執行用戶要有對DIR目錄的讀寫權限

FILENAME是文件名,

OPEN_MODE是打開模式('R'是讀文本,'W'是寫文本,'A'是附加文本,參數不分大小寫,如果指定'A'但是文件不存在,它會用'W'先創建出來,'W'有覆蓋的功能)*/

--定義輸出表格標題

UTL_FILE.PUT_LINE(VSFILE,

'OWNER, OBJECT_NAME,

OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS');

--每個文件加載行數[每次進入循環都賦值為0].排除標頭部分

V_CNT := 0;

--設置執行的SQL語句

--將FOR循環查詢的內容

FOR SQL_ IN (select OWNER, OBJECT_NAME,

OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from dba_objects) LOOP

--映射字段列表

C1:= SQL_.OWNER;

C2:= SQL_.OBJECT_NAME;

C3:= SQL_.OBJECT_TYPE;

C4:= SQL_.CREATED;

C5:= SQL_.LAST_DDL_TIME;

C6:= SQL_.STATUS;

--輸出每一行數據

/*UTL_FILE.PUT_LINE若需要EXCEL格式,需要每字段用逗號隔開,,WINDOWS EXCEL工具打開默認就是EXCEL格式*/

UTL_FILE.PUT_LINE(VSFILE,

C1 || ',' || C2 || ',' ||

C3 || ',' || C4 || ',' ||

C5 || ',' ||

C6);

--計數器,每一條數據都循環+1

V_CNT := V_CNT + 1;

END LOOP;

--打印每個文件LOAD ROWS

DBMS_OUTPUT.PUT_LINE( OUTFILE || '.CSV文件LOAD ROWS:' || V_CNT);

--放在LOOP后,否則報錯ORA-29282:文件ID無效/ORA-06512:在"SYS.UTL_FILE", LINE 878

--若不寫如下 強制輸出緩沖/關閉句柄,可能存在導出數據少于查詢條目

UTL_FILE.FFLUSH(VSFILE);

UTL_FILE.FCLOSE(VSFILE);

END;

--腳本內容結束---

上述腳本已經通過多次測試成功,且每一步都有詳細說明,用戶可根據實際的SQL語句進行設當調整即可實現數據導出到excel。

下面是執行成功截圖:

此時可在D:\expdata目錄下找到導出的.csv文件,如:

二利用plsql

developer將執行結果導出為.csv文件

2.1方法描述

先執行要查詢的SQL語句(執行完能看到有結果即可,無需顯示所有數據),然后點擊“export query result...”按鈕,選擇“CSV file”(或需要的文件類型),在彈出的對話框輸入文件名后點擊“保存”按鈕即可。

2.2操作演示

這里演示如何通過plsql

developer工具將指定SQL語句的執行結果導出到.csv文件。

指定SQL:

select

OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from

dba_objects;

說明:

dba_objects包含18萬行數據。

導出完成后可在指定的目錄下找到導出的.csv文件。

三利用excel連接數據庫進行導出

3.1方法描述

Excel可通過ODBC驅動直接寫SQL語句查詢Oracle中數據。

3.2操作演示

這里演示如何通過excel連接數據庫進行數據導出。

3.2.1配置ODBC數據源

開始->控制面板->系統和安全->管理工具->ODBC數據源(可根據自己的情況選擇32位還是64位)。

因安裝的是Oracle

11.2.0.4 64位,故選擇ODBC數據源(64位),顯示如下:

進入Oracle ODBC配置項,需要填寫的有四項:

Data Source Name:其實就是給該數據源取一個名字,在本例中我取的是“test”。

Description:對該數據源的描述,可寫可不寫。

TNS Service Name:即網絡服務名,這個是在Oracle客戶端tnsnames.ora中定義,這里的是“excel_to_oracle”。

tnsnames.ora中對應的內容可能如下:

excel_to_oracle

=

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 182.17.6.5)(PORT

= 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

User ID:用戶名,該用戶必須對所查詢的表有可讀權限。

3.2.2在Excel中進行查詢操作

注:這里的Excel版本是2016。

2.1、數據->獲取外部數據->自其他來源->來自Microsof Query,如圖所示:

2.2、選擇數據源“test”,點擊“確認”。

2.3、輸入scott用戶的密碼,點擊“OK”。

這里可能會卡一會兒

2.4、選擇需要操作的表:

2.5、可根據實際情況篩選數據,這里直接下一步:

2.6、可根據實際情況進行排序,這里直接下一步:

2.7、將數據返回microsoft excel,完成設置:

2.8、在最后彈出的對話框設置好顯示方式和放置位置,點擊確定即可下:

可以看到數據已顯示到excel表格中:

如果在microsoft

query中進行操作,可以點擊如下圖的按鈕將數據返回到excel:

最后,可通過excel保存查詢數據。

四利用spool打印數據到指定文件

4.1方法描述

在sqlplus工具中通過spool命令可保存sql執行結果到指定文件。

4.2操作演示

這里演示如何通過spool格式化輸出scott用戶下的tab表數據并保存到指定文件。

conn scott

--輸入口令:

--已連接。

--格式化輸出結果

set

linesize 200

set term

off verify off feedback off pagesize 6000

set markup

html on entmap ON spool on preformat off

--利用spool命令說明生成的xls表的名稱

spool

D:\expdata\tables.xls

--執行查詢語句

select *

from tab;

--保存文件

spool off

exit

導出完成后可在指定的目錄下找到導出的.xls文件,如:

總結

以上是生活随笔為你收集整理的exp导出excel oracle_如何从Oracle快速导出数据到Excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。