电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

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

一、常見的spool方法

二、UTL_FILE包方法

三、sqluldr2工具

為了構建導出文本文件,先做點準備工作

1、擴充表空間

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

2、創建一張10萬記錄和50萬記錄的數據表

首先為了快速創建表數據用了CONNECT BY方法,再次為了把表存儲搞大,每個字段長度都是1000字節,一條記錄平均4000字節左右,數據庫的db_block_size=8192字節,由于block還包括其他信息,所以一個塊只能存儲一條記錄,10萬記錄大概在800M左右,50萬記錄為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), --大寫字母隨機       DBMS_RANDOM.STRING ("l", 5), --小寫字母隨機       DBMS_RANDOM.STRING ("a", 5), --混合字母隨機       DBMS_RANDOM.STRING ("x", 5)  --字符串數字隨機     --DBMS_RANDOM.STRING ("p", 5) --鍵盤字符隨機  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), --大寫字母隨機       DBMS_RANDOM.STRING ("l", 5), --小寫字母隨機       DBMS_RANDOM.STRING ("a", 5), --混合字母隨機       DBMS_RANDOM.STRING ("x", 5)  --字符串數字隨機     --DBMS_RANDOM.STRING ("p", 5) --鍵盤字符隨機  FROM (SELECT level,ROWNUM rn   FROM DUAL       CONNECT BY ROWNUM<=500000) a;--164 seconds       COMMIT; 

3、簡單做一下表分析

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

4、查看一下表的統計信息

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用來導出record10w記錄

@C:\software\sqluldr2\spool10w.sql

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

定義spool50w.sql用來導出record50w記錄

@C:\software\sqluldr2\spool50w.sql

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

在Oracle Command窗口中執行命令

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秒

補充

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包

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

UTL_FILE.FOPEN打開文件

UTL_FILE.PUT_LINE寫入記錄

UTL_FILE.FCLOSE關閉文件

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

sqlplus / as sysdba
create directory MY_DIR as ‘/home/oracle/’;
grant read,write on directory dir_dump to HR;##也可以直接建立一個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

說實在的Oracle對大批量大規模數據的導出做的很不友好,大概是基于某種自信吧,spool的效率一般很低,很多開源ETL工具都是通過JDBC連接導出的,效率也好不到那里去

sqluldr2的作者是樓方鑫,Oracle的大牛,原來淘寶的大神,有過幾面之緣,是基于OCI底層接口開發的文本導出工具。

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

sqluldr2有幾個版本,面向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語句   field   = separator string between fields    #指定字段分隔符   record  = separator string between records   #指定記錄換行符   rows    = print progress for every given rows (default, 1000000)     #輸出導出記錄日志   file    = output file name(default: uldrdata.txt)    #導出數據文件名   log     = log file name, prefix with + to append mode#導出日志文件名   fast    = auto tuning the session level parameters(YES)      #快速導出參數   text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).       #導出類型   charset = character set name of the target database. #設置目標數據庫字符集   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

#設置查詢條件為select * from record50w,導出文件頭,導出文件名為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

具體執行見下面:

c:\software\sqluldr2>time當前時間: 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當前時間: 18:14:26.40 --19秒c:\software\sqluldr2>time當前時間: 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當前時間: 18:14:43.05--7秒

總結:

總的來說,Spool比較簡單,但效率比較低

sqluldr2是基于OCI接口開發的,性能上最快

UTL_FILE,是Oracle自帶的包,可以測試一下

標簽: Oracle
相關文章:
主站蜘蛛池模板: 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 交通气象站_能见度检测仪_路面状况监测站- 天合环境科技 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 江苏农村商业银行招聘网_2024江苏农商行考试指南_江苏农商行校园招聘 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 一航网络-软件测评官网| 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 江苏齐宝进出口贸易有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd |