當前位置:首頁 » 編程語言 » sqlplus把sql結果導出
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlplus把sql結果導出

發布時間: 2023-05-08 04:34:25

『壹』 sql plus 中數據怎麼輸出

可以導出到excel中,你可以使用一個工具,plsql developer,很好用的。
把EXCEL倒入資料庫,你可以用pb來做,不過首先你要用把excel變成txt文件,具體方法你可以在網上找,很多的。或者borland的導入導出工具,等等,很容易實現!
當然如果你實在不情願用其他軟體導的話
使用SQLPLUS自帶的SPOOL命令也可以完成。

通過sql*plus輸出xls,html兩種格式文件.
首先創建兩個腳本:
1.main.sql
用以設置環境,調用具體功能腳本
2.功能腳本-get_tables.sql
為實現具體功能之腳本
通過這樣兩個腳本可以避免spool中的冗餘信息,參考:
如何去除SQLPLUS中SPOOL的冗餘信息

示例如下:
1.main.sql腳本:
[oracle@jumper utl_file]$ more main.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
spool tables.xls
@get_tables.sql
spool off
exit

2.get_tables.sql腳本:
[oracle@jumper utl_file]$ more get_tables.sql
select owner,table_name,tablespace_name,blocks,last_analyzed
from all_tables order by 1,2;

3.執行並獲得輸出:
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @main

SQL*Plus: Release 9.2.0.4.0 - Proction on Mon Apr 25 10:30:11 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls

『貳』 SQL plus 中數據怎麼樣輸出

/ as {sysdba|sysopr}:使用操作系統用戶驗證,以osdba或osopr一員的身份登錄,如驗證通過,被賦予sysdba或sysopr的許可權

使用格式:sqlplus "/ as sysdba"

/nolog:不執行connect操作,直接進入sqlplus操作界面

-s:silent模式,不顯示sqlplus啟動信息和提示符

<:接受sql腳本從標准輸入重定向

<<:立即文檔

4.4.2 提示符命令

accept variable [number|char|date] [format format] [default default] [prompt text] [hide]:接受輸入變數

例子:accept pwd char format a8 prompt Password: hide

column column [format format] [heading heading]:設定對某個域的顯示格式

如果要同時改變某域的輸出長度和標題,必須使用column命令

見emp的定義,name本為char(20),輸出縮為10位,ty本為 char(1),擴張為6位,以便有足夠的空間顯示中文標題。

SQL>column name format a10 heading 姓名;

SQL>column ty format a6 heading 職位;

SQL>column age format 999999 heading 年齡;

SQL>column upd_ts format a14 heading 更新時間;

SQL>select name,ty,age,upd_ts from emp;

show option:顯示SET的選項

spool [filename|off]:輸出重定向文件

timing [start text|show|stop]:定時器

4.4.3 SET選項

autocommit:自動提交insert、update、delete帶來的記錄改變,預設為off

colsep:域輸出分隔符

define:識別命令中的變數前綴符,預設為on,也就是&,碰到變數前綴符,後面的字元串作為變數處理

如果待更新內容包含&(在URL中很常見),而define非設為off,sqlplus會把&後面緊跟的字元串當成變數,提示輸入,這里必須重新輸入&和那個字元串,才能實現正常更新。將define設為off,就不再進行變數判斷。

SQL>set define off;

SQL>update bbs_forum set url=http://www.xxx.com/bbs/show.php&forum_id=1 where forum_id=1;

echo:顯示start啟動的腳本中的每個sql命令,預設為on

feedback:回顯本次sql命令處理的記錄條數,預設為on

heading:輸出域標題,預設為on

linesize:輸出一行字元個數,預設為80

如果一行輸出超過linesize,會回車到第二行,這樣格式就會混亂。

markup html:html格式輸出,預設為off

通常需要與spool配合,否則html輸出就沒有意義。

numwidth:輸出number類型域長度,預設為10

長number類型的域常常因為輸出長度的問題,引起誤會。

pagesize:輸出每頁行數,預設為24

為了避免分頁,可設定為0。

termout:顯示腳本中的命令的執行結果,預設為on

timing:顯示每條sql命令的耗時,預設為off

trimout:去除標准輸出每行的拖尾空格,預設為off

trimspool:去除重定向(spool)輸出每行的拖尾空格,預設為off

4.4.4 例子

以文本形式下載表數據

oracle缺乏將表中數據輸出至文本文件的工具,因此只能利用sqlplus和unix工具做變通的處理

sqlplus -s dbuser/oracle </dev/null

set colsep |;

set echo off;

set feedback off;

set heading off;

set pagesize 0;

set linesize 1000;

set numwidth 12;

set termout off;

set trimout on;

set trimspool on;

spool tmp.txt;

select * from emp;

spool off;

exit

EOF

tr -d < tmp.txt >emp.txt 刪除空格,可選

注意:一定要用spool,如果在命令行中直接用>tmp.txt可能會造成數據缺失,至少在Unixware7上如此

假定某域是char(n),如中間出現回車\n,則下載出的這條記錄的格式將會錯亂,不宜採用此方法

『叄』 如何將SQL執行結果輸出到文本文件中

如何將SQL執行結果輸出到文本文件中
這個方法可以,要在sqlplus的環境里執行,
也可以直接在cmd里執行
sqlplus "username/password@tnaname"@abc.sql > result.log
比如
sqlplus "test1/test@orcl"@test.sql > result.log