日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle導(dǎo)出文本文件的三種方法(spool,UTL_FILE,sqluldr2)

瀏覽:261日期:2023-05-30 16:13:48

一、常見(jiàn)的spool方法

二、UTL_FILE包方法

三、sqluldr2工具

為了構(gòu)建導(dǎo)出文本文件,先做點(diǎn)準(zhǔn)備工作

1、擴(kuò)充表空間

ALTER TABLESPACE DAMS_DATA   ADD DATAFILE "C:\Oracle\oradata\orcl\DAMADATA2.DBF"  SIZE 500M AUTOEXTEND ON MAXSIZE 6000M; 

2、創(chuàng)建一張10萬(wàn)記錄和50萬(wàn)記錄的數(shù)據(jù)表

首先為了快速創(chuàng)建表數(shù)據(jù)用了CONNECT BY方法,再次為了把表存儲(chǔ)搞大,每個(gè)字段長(zhǎng)度都是1000字節(jié),一條記錄平均4000字節(jié)左右,數(shù)據(jù)庫(kù)的db_block_size=8192字節(jié),由于block還包括其他信息,所以一個(gè)塊只能存儲(chǔ)一條記錄,10萬(wàn)記錄大概在800M左右,50萬(wàn)記錄為4G

CREATE TABLE record10w(id      INT,data1   CHAR(1000),data2   CHAR(1000),data3   CHAR(1000),data4   CHAR(1000));INSERT INTO record10wSELECT a.rn,       DBMS_RANDOM.STRING ("u", 5), --大寫(xiě)字母隨機(jī)       DBMS_RANDOM.STRING ("l", 5), --小寫(xiě)字母隨機(jī)       DBMS_RANDOM.STRING ("a", 5), --混合字母隨機(jī)       DBMS_RANDOM.STRING ("x", 5)  --字符串?dāng)?shù)字隨機(jī)     --DBMS_RANDOM.STRING ("p", 5) --鍵盤(pán)字符隨機(jī)  FROM (SELECT level,ROWNUM rn   FROM DUAL       CONNECT BY ROWNUM<=100000) a;--27 seconds       COMMIT;     CREATE TABLE record50w(id      INT,data1   CHAR(1000),data2   CHAR(1000),data3   CHAR(1000),data4   CHAR(1000));INSERT INTO record50wSELECT a.rn,       DBMS_RANDOM.STRING ("u", 5), --大寫(xiě)字母隨機(jī)       DBMS_RANDOM.STRING ("l", 5), --小寫(xiě)字母隨機(jī)       DBMS_RANDOM.STRING ("a", 5), --混合字母隨機(jī)       DBMS_RANDOM.STRING ("x", 5)  --字符串?dāng)?shù)字隨機(jī)     --DBMS_RANDOM.STRING ("p", 5) --鍵盤(pán)字符隨機(jī)  FROM (SELECT level,ROWNUM rn   FROM DUAL       CONNECT BY ROWNUM<=500000) a;--164 seconds       COMMIT; 

3、簡(jiǎn)單做一下表分析

ANALYZE TABLE RECORD10W COMPUTE STATISTICS;  ANALYZE TABLE RECORD50W COMPUTE STATISTICS;  

4、查看一下表的統(tǒng)計(jì)信息

SELECT A.OWNER,A.TABLE_NAME,A.TABLESPACE_NAME,A.NUM_ROWS,A.BLOCKS,A.EMPTY_BLOCKS,A.AVG_ROW_LEN  FROM ALL_TABLES A  WHERE OWNER="METADATA"    AND TABLE_NAME IN ("RECORD10W","RECORD50W") 

方法一,spool方法

定義spool10w.sql用來(lái)導(dǎo)出record10w記錄

@C:\software\sqluldr2\spool10w.sql

SPOOL C:\software\sqluldr2\data\record10wspool.txt SET ECHO OFF  --不顯示腳本中正在執(zhí)行的SQL語(yǔ)句SET FEEDBACK OFF --不顯示sql查詢或修改行數(shù)SET TERM OFF   --不在屏幕上顯示SET HEADING OFF  --不顯示列SET LINESIZE 1000; //設(shè)置行寬,根據(jù)需要設(shè)置,默認(rèn)100select id||","||data1|| "," ||data2 FROM record10w;  --需要導(dǎo)出的數(shù)據(jù)查詢sqlSPOOL OFF

定義spool50w.sql用來(lái)導(dǎo)出record50w記錄

@C:\software\sqluldr2\spool50w.sql

SPOOL C:\software\sqluldr2\data\record10wspool.txt SET ECHO OFF  --不顯示腳本中正在執(zhí)行的SQL語(yǔ)句SET FEEDBACK OFF --不顯示sql查詢或修改行數(shù)SET TERM OFF   --不在屏幕上顯示SET HEADING OFF  --不顯示列SET LINESIZE 1000; //設(shè)置行寬,根據(jù)需要設(shè)置,默認(rèn)100select id||","||data1|| "," ||data2 FROM record50w;  --需要導(dǎo)出的數(shù)據(jù)查詢sqlSPOOL OFF

在Oracle Command窗口中執(zhí)行命令

SQL> set time on;18:09:32 SQL> @C:\software\sqluldr2\spool10w.sqlStarted spooling to C:\software\sqluldr2\data\record10wspool.txt--20秒18:09:51 SQL> @C:\software\sqluldr2\spool50w.sql18:10:52 SQL> --1分1秒

補(bǔ)充

sqlplus / as sysdbaset linesize 1000set pagesize 0set echo offset termout offset heading offset feedback offSET trims ONset term offSET trimspool ONSET trimout ONspool "/archlog/exp/test.txt";select OWNER||" , "||SEGMENT_NAME||" , "||PARTITION_NAME||" , " from dba_segments where rownum<10000;spool off;/

方法二、UTL_FILE包

這個(gè)包很久之前用過(guò),好像效率也不錯(cuò),在此不想嘗試了,有興趣的朋友可以試一下性能。

UTL_FILE.FOPEN打開(kāi)文件

UTL_FILE.PUT_LINE寫(xiě)入記錄

UTL_FILE.FCLOSE關(guān)閉文件

UTL_FILE.FOPEN第一個(gè)參數(shù)為文件路徑,不能直接指定絕對(duì)路徑,需要建立directory,然后指定我們建立的directory

sqlplus / as sysdba
create directory MY_DIR as ‘/home/oracle/’;
grant read,write on directory dir_dump to HR;##也可以直接建立一個(gè)public directory

CREATE OR REPLACE PROCEDURE test IStestjiao_handle UTL_FILE.file_type;BEGIN  test_handle := UTL_FILE.FOPEN("MY_DIR","test.txt","w");    FOR x IN (SELECT * FROM TESTJIAO) LOOP      UTL_FILE.PUT_LINE(test_handle,x.ID || "," || x.RQ ||",");    END LOOP;      UTL_FILE.FCLOSE(test_handle);EXCEPTION WHEN OTHERS THEN  DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));END;/

方法三、sqluldr2

說(shuō)實(shí)在的Oracle對(duì)大批量大規(guī)模數(shù)據(jù)的導(dǎo)出做的很不友好,大概是基于某種自信吧,spool的效率一般很低,很多開(kāi)源ETL工具都是通過(guò)JDBC連接導(dǎo)出的,效率也好不到那里去

sqluldr2的作者是樓方鑫,Oracle的大牛,原來(lái)淘寶的大神,有過(guò)幾面之緣,是基于OCI底層接口開(kāi)發(fā)的文本導(dǎo)出工具。

sqluldr2小巧方便,使用方法類(lèi)似于Oracle自帶的exp,支持自定義SQL、本地和客戶端的導(dǎo)出,速度快,效率高。

sqluldr2有幾個(gè)版本,面向linux和windows的,有32位和64位的,可自行找鏈接下載。

c:\software\sqluldr2>sqluldr264SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1(@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.License: Free for non-commercial useage, else 100 USD per server.Usage: SQLULDR2 keyword=value [,keyword=value,...]Valid Keywords:   user    = username/password@tnsname  #連接用戶/密碼@tns名稱   sql     = SQL file name      #指定SQL文件名   query   = select statement #指定SQL語(yǔ)句   field   = separator string between fields    #指定字段分隔符   record  = separator string between records   #指定記錄換行符   rows    = print progress for every given rows (default, 1000000)     #輸出導(dǎo)出記錄日志   file    = output file name(default: uldrdata.txt)    #導(dǎo)出數(shù)據(jù)文件名   log     = log file name, prefix with + to append mode#導(dǎo)出日志文件名   fast    = auto tuning the session level parameters(YES)      #快速導(dǎo)出參數(shù)   text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).       #導(dǎo)出類(lèi)型   charset = character set name of the target database. #設(shè)置目標(biāo)數(shù)據(jù)庫(kù)字符集   ncharset= national character set name of the target database.   parfile = read command option from parameter file      for field and record, you can use "0x" to specify hex character code,  \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 "=0x27

#設(shè)置查詢條件為select * from record50w,導(dǎo)出文件頭,導(dǎo)出文件名為record50wsqluldr2.csv,日志文件名為record50wsqluldr2.log,控制文件名為record50w_sqlldr.ctl

sqluldr264 metadata/XXXXXX@127.0.0.1:1521/orcl query="select id,data1,data2 from record50w" head=yes file=C:\software\sqluldr2\data\record50wsqluldr2.csv log=C:\software\sqluldr2\log\record50wsqluldr2.log table=record50w

sqluldr264 metadata/XXXXXX@127.0.0.1:1521/orcl query="select id,data1,data2 from record10w" head=yes file=C:\software\sqluldr2\data\record10wsqluldr2.csv log=C:\software\sqluldr2\log\record10wsqluldr2.log table=record10w

具體執(zhí)行見(jiàn)下面:

c:\software\sqluldr2>time當(dāng)前時(shí)間: 18:14:07.92c:\software\sqluldr2>sqluldr264 metadata/XXXXXX@127.0.0.1:1521/orcl query="select id,data1,data2 from record50w" head=yes file=C:\software\sqluldr2\data\record50wsqluldr2.csv log=C:\software\sqluldr2\log\record50wsqluldr2.log table=record50wc:\software\sqluldr2>time當(dāng)前時(shí)間: 18:14:26.40 --19秒c:\software\sqluldr2>time當(dāng)前時(shí)間: 18:14:36.83c:\software\sqluldr2>sqluldr264 metadata/XXXXXX@127.0.0.1:1521/orcl query="select id,data1,data2 from record10w" head=yes file=C:\software\sqluldr2\data\record10wsqluldr2.csv log=C:\software\sqluldr2\log\record10wsqluldr2.log table=record10wc:\software\sqluldr2>time當(dāng)前時(shí)間: 18:14:43.05--7秒

總結(jié):

總的來(lái)說(shuō),Spool比較簡(jiǎn)單,但效率比較低

sqluldr2是基于OCI接口開(kāi)發(fā)的,性能上最快

UTL_FILE,是Oracle自帶的包,可以測(cè)試一下

標(biāo)簽: Oracle
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本午夜精品视频在线观看| 亚洲精品动态| 日本不卡免费高清视频在线| 久久久蜜桃一区二区人| 国产精品99一区二区| 香蕉精品久久| 午夜性色一区二区三区免费视频| 国产九一精品| 99久久激情| 色综合视频一区二区三区日韩| 国产精品九九| 久久婷婷丁香| 亚洲三级国产| 精品国产麻豆| 狠狠色综合网| 久久国产三级| 久久久国产精品一区二区中文| 久久最新视频| 久久一区视频| 欧美日韩四区| 久久精品av麻豆的观看方式| 国产综合色区在线观看| 日韩精品一区第一页| 国产剧情在线观看一区| 亚洲国产专区校园欧美| 国产欧美一级| 影音先锋久久| 精品国产亚洲一区二区三区| 国产视频一区三区| 久久香蕉精品香蕉| 亚洲免费高清| 国产粉嫩在线观看| 91成人小视频| 欧美日韩四区| 国产成人精选| 一区二区三区网站| 日韩伦理在线一区| 日韩精品高清不卡| 香蕉人人精品| 国产一区丝袜| 亚洲色图国产| 久久久久国产| 国产精成人品2018| 老色鬼久久亚洲一区二区| 国产伦久视频在线观看| 日本国产欧美| 激情综合网五月| 精品视频黄色| 日韩精品第一| 丝袜国产日韩另类美女| 红杏一区二区三区| 日本午夜精品久久久| 99精品99| 久久久夜精品| 国产欧洲在线| 国产精品igao视频网网址不卡日韩 | 日韩精品中文字幕吗一区二区 | 在线精品小视频| 色婷婷综合网| 麻豆精品在线观看| 久久高清国产| 不卡中文字幕| 日韩大片在线播放| 久久这里只有| 国产精品伊人| 日韩av中文字幕一区| 免费一级片91| 最新日韩av| 欧美亚洲激情| 91精品久久久久久久久久不卡| 久久精品国产99国产精品| 日韩欧美久久| 亚洲日本久久| 免费在线观看一区二区三区| 免费av一区| 国际精品欧美精品| 国产福利一区二区三区在线播放| 日本在线视频一区二区| 首页欧美精品中文字幕| 午夜国产一区二区| 亚洲性色视频| 亚洲特级毛片| 精品中文字幕一区二区三区av| 91tv亚洲精品香蕉国产一区| 国产一区二区三区精品在线观看| 国产精品一区二区免费福利视频| 日本在线成人| 日韩不卡免费视频| 日韩精品视频在线看| 亚洲精品自拍| 日韩精品一区第一页| 日韩在线一二三区| 亚洲精品一级| 69堂精品视频在线播放| 欧美影院精品| 国产欧美日韩在线观看视频| 日韩av网站在线免费观看| 青草国产精品| 国产区精品区| 精品日韩一区| 日韩黄色大片| 伊人精品一区| 亚洲综合另类| 亚洲精品免费观看| 国产亚洲第一伦理第一区| 欧美日韩调教| 美女高潮久久久| 久久亚州av| 中文字幕一区久| 久久精品高清| 免费看的黄色欧美网站| 日韩综合小视频| 国产一级成人av| 精品美女在线视频| 韩国精品主播一区二区在线观看| 欧美日韩一区二区三区视频播放| 国产一区亚洲| 亚洲综合激情在线| 国产视频网站一区二区三区| 久久亚洲资源中文字| 国内揄拍国内精品久久| 欧美日韩免费看片| 女同性一区二区三区人了人一 | 日韩国产一区二| 久久精品福利| 99热精品久久| 亚洲另类黄色| 麻豆视频观看网址久久| 精品成人免费一区二区在线播放| 黄色精品网站| 国产精品最新自拍| 久久久久免费av| 四虎国产精品免费久久| 欧美激情日韩| 狠狠躁少妇一区二区三区| 婷婷综合在线| 欧美另类中文字幕| 日韩欧美二区| 蜜桃久久精品一区二区| 国产黄色精品| 午夜国产一区二区| 国产亚洲一卡2卡3卡4卡新区| 超碰在线99| 在线精品国产亚洲| 精品视频网站| 视频在线在亚洲| 鲁大师精品99久久久| 国内亚洲精品| 欧美日韩黄网站| 蜜桃精品在线| 日韩激情一二三区| 精品成人免费一区二区在线播放| 亚洲天堂日韩在线| 精品久久影院| 另类亚洲自拍| 国产在线日韩精品| 日韩精品一卡二卡三卡四卡无卡| 免费日韩成人| 亚洲欧美日本日韩| 国产成人精品一区二区三区在线| 夜夜嗨av一区二区三区网站四季av| 国产精品香蕉| 午夜av一区| 精品国产乱码久久久| 9久re热视频在线精品| 精品久久久网| 最新亚洲国产| 日韩精品首页| 久久成人av| 日韩专区欧美专区| 日韩国产欧美| 国产日韩欧美一区在线| 黄色国产精品| 黄色在线网站噜噜噜| 日韩精品三区四区| 国内精品福利| 久久久久久夜| 欧美精品三级在线| 久热精品在线| 人人草在线视频| 国产毛片精品久久| 日韩中文字幕91| 99久精品视频在线观看视频| 国产精品18| 午夜天堂精品久久久久| 激情综合自拍| 激情国产在线| 麻豆中文一区二区| 日韩精品中文字幕吗一区二区| 久久国产亚洲| 国产66精品| 久久99免费视频| 日韩不卡一二三区| 在线综合视频| 欧美日韩视频网站| 久草精品视频| 国产精品久久国产愉拍| 日韩一二三区在线观看| 久久亚洲国产精品一区二区| 亚洲午夜久久久久久尤物|