新聞中心
怎么在oracle下寫(xiě)一個(gè)腳本,導(dǎo)出表數(shù)據(jù)為EXCEL格式文件
無(wú)法直接保存到excel中,但是可以保存到csv文件,同樣是excel的格式,方法如下:
在三穗等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),三穗網(wǎng)站建設(shè)費(fèi)用合理。
譬如要把文件生成在d盤(pán)下的test目錄下:
1,在d盤(pán)根目錄下新建test目錄
2,sqlplus以system用sysdba登錄
3,create or replace directory TMP as ’d:\test’;
4,grant read on directory TMP to user;
5,alter system set utl_file_dir='d:\test' scope=spfile;
然后建立存儲(chǔ)過(guò)程,表是隨便建了一個(gè),最后的文件名按要求需要按照當(dāng)前日期的前一天生成,所以后邊文件名的地方write_file_name處就按照要求來(lái)了
create or replace PROCEDURE SP_OUTPUT
(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2)
is
v_code number;
v_text varchar2(255);
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
v_aaa varchar2(5);
v_bbb varchar2(5);
cursor cur_sp_out
is
select aaa,bbb
from aaa;
begin
open cur_sp_out;
loop
fetch cur_sp_out into v_aaa,v_bbb;
exit when cur_sp_out%notfound;
write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.xls';
file_handle := utl_file.fopen('TMP',write_file_name,'a');
write_content := v_aaa||' '||v_bbb;
--write file
IF utl_file.is_open(file_handle) THEN
utl_file.put_line(file_handle,write_content);
END IF;
--close file
utl_file.fclose(file_handle);
end loop;
close cur_sp_out;
v_code := 0;
v_text := '完成';
exception
when others then
on_flag := SQLCODE;
out_reason := SQLERRM;
begin
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
end IF;
end;
rollback;
end;
這樣基本就完成了,但是建立完畢后需要重啟數(shù)據(jù)庫(kù),否則文件寫(xiě)不進(jìn)指定的目錄下
需要注意的是: write_content := v_aaa||' '||v_bbb; 這個(gè)位置
v_aaa|| 和v_bbb中間引號(hào)的地方是TAB符,否則輸出來(lái)的XLS文件中,會(huì)把這些字符串合在一個(gè)單元格中。
oracle數(shù)據(jù)庫(kù),批量插入數(shù)據(jù)腳本
批量插入數(shù)據(jù)腳本
1、第一種批量插入數(shù)據(jù)腳本,可以基本滿足要求。理解上較為簡(jiǎn)單,所以這個(gè)最常用。
NEXTVAL和CURRVAL的區(qū)別:
1、如果 sequence.CURRVAL 和 sequence.NEXTVAL 都出現(xiàn)在一個(gè) SQL 語(yǔ)句中,則序列只增加一次。在這種情況下,每個(gè) sequence.CURRVAL 和 sequence.NEXTVAL 表達(dá)式都返回相同的值,不管在語(yǔ)句中sequence.CURRVAL 和 sequence.NEXTVAL 的順序。
執(zhí)行腳本結(jié)果如下:
3、兩個(gè)表,同時(shí)批量插入數(shù)據(jù)的腳本
3、
4、 涉及子表時(shí),批量插入數(shù)據(jù)腳本,
5、 批量修改數(shù)據(jù) :
時(shí)間取數(shù)方式:
一、SYSTIMESTAMP(取當(dāng)前系統(tǒng)值)
二、SYSDATE(取當(dāng)前系統(tǒng)值,但只精確到時(shí),分和秒都為0)
三、固定值為:TO_TIMESTAMP ('2019-2-12 15:24:45.703000', 'yyyy-mm-dd hh24:mi:ss.ff6')
把固定的字段改為變量:
方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)
方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)
怎樣將Oracle中的數(shù)據(jù)導(dǎo)出成SQL腳本
plsql devloper的導(dǎo)出中有三個(gè)4,一個(gè)是dmp文件,一個(gè)是plsql文件,還有一個(gè)是導(dǎo)出為腳本的功能。用這個(gè)就行。
oracle創(chuàng)建job的腳本執(zhí)行問(wèn)題
在SQL*Plus中可以處理三種類(lèi)型的命令:SQL語(yǔ)句、PL/SQL塊和SQL*Plus命令。
但三者之間是有區(qū)別的。
腳本中的 “:job”是一種綁定變量的方式,屬于sql plus的命令格式。需要寫(xiě)成如下格式,然后在plsql developer的命令窗口中執(zhí)行,或者到sqlplus中執(zhí)行。
var job number;
begin
sys.dbms_job.submit(job = :job,
what = 'ps_inventory_io;',
next_date = to_date('01-01-4000', 'dd-mm-yyyy'),
interval = 'trunc(sysdate)+1+0/24');
commit;
end;
/
1)SQL語(yǔ)句是以數(shù)據(jù)庫(kù)為操作對(duì)象的語(yǔ)言,主要包括數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML和數(shù)據(jù)控制語(yǔ)言DCL以及數(shù)據(jù)存儲(chǔ)語(yǔ)言DSL。當(dāng)輸入SQL語(yǔ)句后,SQL*Plus將其保存在內(nèi)部緩沖區(qū)中。
當(dāng)SQL命令輸入完畢時(shí),有三種方法可以結(jié)束SQL命令:在命令行的末尾輸入分號(hào)(;)并按回車(chē);在單獨(dú)一行上用斜杠(/);或用空行表示。
2)PL/SQL塊同樣是以數(shù)據(jù)庫(kù)中的數(shù)據(jù)為操作對(duì)象。但由于SQL不具備過(guò)程控制功能,所以,為了能夠與其他語(yǔ)言一樣具備面向過(guò)程的處理功能,在SQL中加入了諸如循環(huán)、選擇等面向過(guò)程的處理功能,由此形成了PL/SQL。所有PL/SQL語(yǔ)句的解釋均由PL/SQL引擎來(lái)完成。使用PL/SQL塊可編寫(xiě)過(guò)程、觸發(fā)器和包等數(shù)據(jù)庫(kù)永久對(duì)象。
3)SQL*Plus命令主要用來(lái)格式化查詢(xún)結(jié)果、設(shè)置選擇、編輯及存儲(chǔ)SQL命令、以設(shè)置查詢(xún)結(jié)果的顯示格式,并且可以設(shè)置環(huán)境選項(xiàng)。
網(wǎng)站名稱(chēng):oracle如何生成腳本,oracle腳本編寫(xiě)
新聞來(lái)源:http://fisionsoft.com.cn/article/dsggdgd.html