- 浏览: 164978 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
Oracle:SQL*Loader与外部表(External Table)的用法
exp : 二进制-->数据库
sqlloader : 文本 -->数据库
oracle_loader : 文本 -->数据库
oracle_datapump : 二进制-->数据库
===================================================================================
SQL*Loader的用法:
- SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据
- 仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使
- 您快速掌握SQL*LOADER的使用方法。
- 首先,我们认识一下SQL*LOADER。
- 在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。
- 如执行:d:\oracle>sqlldr
- SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 11:06:42 2002
- (c) Copyright 1999 Oracle Corporation. All rights reserved.
- 用法: SQLLOAD 关键字 = 值 [,keyword=value,...]
- 有效的关键字:
- userid -- ORACLE username/password
- control -- Control file name
- log -- Log file name
- bad -- Bad file name
- data -- Data file name
- discard -- Discard file name
- discardmax -- Number of discards to allow (全部默认)
- skip -- Number of logical records to skip (默认0)
- load -- Number of logical records to load (全部默认)
- errors -- Number of errors to allow (默认50)
- rows -- Number of rows in conventional path bind array or between direct p
- ath data saves
- (默认: 常规路径 64, 所有直接路径)
- bindsize -- Size of conventional path bind array in bytes(默认65536)
- silent -- Suppress messages during run (header,feedback,errors,discards,part
- itions)
- direct -- use direct path (默认FALSE)
- parfile -- parameter file: name of file that contains parameter specification
- s
- parallel -- do parallel load (默认FALSE)
- file -- File to allocate extents from
- skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默
- 认FALSE)
- skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus
- able(默认FALSE)
- commit_discontinued -- commit loaded rows when load is discontinued(默认FALSE)
- readsize -- Size of Read buffer (默认1048576)
- PLEASE NOTE: 命令行参数可以由位置或关键字指定
- 。前者的例子是 'sqlload
- scott/tiger foo';后者的例子是 'sqlload control=foo
- userid=scott/tiger'.位置指定参数的时间必须早于
- 但不可迟于由关键字指定的参数。例如,
- 'SQLLOAD SCott/tiger control=foo logfile=log', 但
- '不允许 sqlload scott/tiger control=foo log',即使允许
- 参数 'log' 的位置正确。
- d:\oracle>
- 我们可以从中看到一些基本的帮助信息,这里,我用到的是中文的WIN2000 ADV SERVER。
- 我们知道,SQL*LOADER只能导入纯文本,所以我们现在开始以实例来讲解其用法。
- 一、已存在数据源result.csv,欲倒入ORACLE中FANCY用户下。
- result.csv内容:
- 1,默认 Web 站点,192.168.2.254:80:,RUNNING
- 2,other,192.168.2.254:80:test.com,STOPPED
- 3,third,192.168.2.254:81:thirdabc.com,RUNNING
- 从中,我们看出4列,分别以逗号分隔,为变长字符串。
- 二、制定控制文件result.ctl
- result.ctl内容:
- load data
- infile 'result.csv'
- append/insert/replace into table resultxt
- fields terminated by ',' optionally enclosed by ' " '
( id, website, ipport,status ) - 说明:
- infile 指数据源文件 这里我们省略了默认的 discardfile result.dsc badfile result.bad
- into table resultxt 默认是INSERT,也可以into table resultxt APPEND为追加方式,或REPLACE
- terminated by ',' 指用逗号分隔
- terminated by whitespace 结尾以空白分隔
- 三、此时我们执行加载:
- D:\>sqlldr userid=fancy/testpass control=result.ctl log=resulthis.out
- SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:25:42 2002
- (c) Copyright 1999 Oracle Corporation. All rights reserved.
- SQL*Loader-941: 在描述表RESULTXT时出现错误
- ORA-04043: 对象 RESULTXT 不存在
- 提示出错,因为数据库没有对应的表。
- 四、在数据库建立表
- create table resultxt
- (resultid varchar2(500),
- website varchar2(500),
- ipport varchar2(500),
- status varchar2(500))
- /
- 五、重新执行加载
- D:\>sqlldr userid=fancy/k1i7l6l8 control=result.ctl log=resulthis.out
- SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:31:57 2002
- (c) Copyright 1999 Oracle Corporation. All rights reserved.
- 达到提交点,逻辑记录计数2
- 达到提交点,逻辑记录计数3
- 已经成功!我们可以通过日志文件来分析其过程:resulthis.out内容如下:
- SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:31:57 2002
- (c) Copyright 1999 Oracle Corporation. All rights reserved.
- 控制文件: result.ctl
- 数据文件: result.csv
- 错误文件: result.bad
- 废弃文件: 未作指定
- :
- (可废弃所有记录)
- 装载数: ALL
- 跳过数: 0
- 允许的错误: 50
- 绑定数组: 64 行,最大 65536 字节
- 继续: 未作指定
- 所用路径: 常规
- 表RESULTXT
- 已载入从每个逻辑记录
- 插入选项对此表INSERT生效
- 列名 位置 长度 中止 包装数据类型
- ------------------------------ ---------- ----- ---- ---- ---------------------
- RESULTID FIRST * , CHARACTER
- WEBSITE NEXT * , CHARACTER
- IPPORT NEXT * , CHARACTER
- STATUS NEXT * WHT CHARACTER
- 表RESULTXT:
- 3 行载入成功
- 由于数据错误, 0 行没有载入。
- 由于所有 WHEN 子句失败, 0 行没有载入。
- 由于所有字段都为空的, 0 行没有载入。
- 为结合数组分配的空间: 65016字节(63行)
- 除绑定数组外的内存空间分配: 0字节
- 跳过的逻辑记录总数: 0
- 读取的逻辑记录总数: 3
- 拒绝的逻辑记录总数: 0
- 废弃的逻辑记录总数: 0
- 从星期二 1月 08 10:31:57 2002开始运行
- 在星期二 1月 08 10:32:00 2002处运行结束
- 经过时间为: 00: 00: 02.70
- CPU 时间为: 00: 00: 00.10(可
- 六、并发操作
- sqlldr userid=/ control=result1.ctl direct=true parallel=true
- sqlldr userid=/ control=result2.ctl direct=true parallel=true
- sqlldr userid=/ control=result2.ctl direct=true parallel=true
- 当加载大量数据时(大约超过10GB),最好抑制日志的产生:
- SQL>ALTER TABLE RESULTXT nologging;
- 这样不产生REDO LOG,可以提高效率。然后在CONTROL文件中load data上面加一行:unrecoverable
- 此选项必须要与DIRECT共同应用。
- 在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到1-10G就算不错了,开始可用结构
- 相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。
Unloader这样的工具,Oracle 没有提供将数据导出到一个文件的工具。但是,我们可以用SQL*Plus的select 及 format 数据来输出到一个文件:
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
spool oradata.txt
select col1 || ',' || col2 || ',' || col3
from tab1
where col2 = 'XYZ';
spool off
另外,也可以使用使用 UTL_FILE PL/SQL 包处理:
rem Remember to update initSID.ora, utl_file_dir='c:/oradata' parameter
declare
fp utl_file.file_type;
begin
fp := utl_file.fopen('c:/oradata','tab1.txt','w');
utl_file.putf(fp, '%s, %s/n', 'TextField', 55);
utl_file.fclose(fp);
end;
当然你也可以使用第三方工具,如SQLWays ,TOAD for Quest等。
SQL*Loader 数据的提交:
一般情况下是在导入数据文件数据后提交的。
也可以通过指定 ROWS= 参数来指定每次提交记录数。
提高 SQL*Loader 的性能:
1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。
2) 可以添加 DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。
3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和 direct 一起使用。
4) 可以同时运行多个导入任务.
常规导入与direct导入方式的区别:
常规导入可以通过使用 INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。
===========================================================================================
外部表的用法:
Oracle有一种表叫外部表,允许你只读访问。外部表定义为一个表,但是不在数据库中,它的数据一般存储在操作系统文件中,数据库中只存储外部表的元数据描述。它可以像数据库中普通表一样来显示外部表的数据。外部表的数据能够直接查询或者使用并行SQL。
你可以选择,连接,排序外部表数据。还可以为外部表创建视图,同义词。但是,不可以在外部表上创建索引,执行DML操作。
使用CREATE TABLE...ORGANIZATION EXTERNAL语句来定义外部表的元数据。这个定义可以认为是一个视图用来通过SQL查询外部表的数据但是不加载到数据库中。实际的机制是一种访问驱动用来读取外部表的数据。当你使用外部表卸载数据时,自动的基于select语句的数据类型创建元数据。
Oracle为外部表提供两种访问驱动:
1. 默认的访问驱动是ORACLE_LOADER。这个允许使用Oracle loader技术从外部文件读取数据。ORACLE_LOADER访问驱动提供数据匹配能力,类似于SQL*Loader工具控制文件语法的子集。
2. 第二种访问驱动是ORACLE_DATAPUMP.这个可用让你卸载数据,从数据库中读数据,插入到外部表,变成一个或多个外部文件,可以用来重新加载到数据库中。
外部表是一种很有用的方法,用来执行基本的数据抽取,传输,加载,特别是用于数据仓库中。
一、oracle_loader的用法:
假如有如下两个数据文件:
1: 数据文件的格式
F1.TXT文件:
13234,FIRSTS
46464,TESTA
F2.TEXT文件:
13234,SECONDS
46464,TEST
2:创建目录,并用DBA进行授权;
sql> create directory test_dir as 'E:temp';
sql>grant read,write on directory test_dir to users;
注意:创建完毕逻辑目录之后要把平面文件拷贝到该目录下,另外还要注意文件名字不要写错。
一定要给oracle用户对这个目录可读可写的权限,操作系统层面,如使用chmod -R 777 test_dir;
3:使用被授权的用户users创建外部表:
create table test_table
(ms_no varchar(20),
tip varchar(20),
descs varchar(20))
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY test_dir
ACCESS Parameters
(
RECORDS DELIMITED BY NEWLINE
badfile 'bad_dev.txt'
LOGFILE 'log_dev.txt'
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(ms_no,tip,descs)
)
LOCATION('F1.txt','F2.txt')
)
reject limit unlimited
;
表创建完成.当然也可以导入一个文件
4:进行SELECT 操作看是否正确;
SQL>select * from test_table
结果如下:
MS_NO TIP DESCS
-------------------- -------------------- --------------------
13234 FIRSTS
46464 TESTA
13234 SECONDS
46464 TEST
5. 如何得到外部表的有关信息:
SQL> DESC DBA_EXTERNAL_TABLES;
Name Type Nullable
----------------------- ------------- - ----
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
TYPE_OWNER CHAR(3) Y
TYPE_NAME VARCHAR2(30)
DEFAULT_DIRECTORY_OWNER CHAR(3) Y
DEFAULT_DIRECTORY_NAME VARCHAR2(30)
REJECT_LIMIT VARCHAR2(40) Y
ACCESS_TYPE VARCHAR2(7) Y
ACCESS_PARAMETERS VARCHAR2(4000) Y
SQL>SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERSFRFROM
DBA_EXTERNAL_TABLES;
可以得到外部表的相关信息;
6. 如何得到外部路径的信息:
SQL> desc DBA_EXTERNAL_LOCATIONS;
得到该表结构:
Name Type Nullable
--------------- -------------- --------
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
LOCATION VARCHAR2(4000) Y
DIRECTORY_OWNER CHAR(3) Y
DIRECTORY_NAME VARCHAR2(30) Y
SQL> select * from DBA_EXTERNAL_LOCATIONS;
得到具体信息;
7. 更改参数:
--更改拒绝限制
ALTER TABLE aa LIMIT 100;
--更改默认目录说明
ALTER TABLE aa DIRECTORY DEFAULT DIRECTORY bdump;
--修改访问参数,如分隔符由","变为"|"
ALTER TABLE aaPARAMETERS ACCESS PARAMETERS (FIELDS TERMINATED BY '|');
--修改文件位置:
ALTER TABLE aaLOCATION('TC_REG_MNGREGIONCODE.txt');
drop table aa;
--删除目录
drop DIRECTORY bdump;
二、oracle_datapump的用法:
可以利用ORACLE_DATAPUMP功能来迁移数据到别的用户或者数据库中。
利用带AS 子查询的语句创建一个外部表,指定location,可以把表中的数据卸载到指定的文件中。
SQL> create table manager_ext
2 (
3 MGRNO,
4 MNAME
5 )
6 ORGANIZATION EXTERNAL
7 (
8 TYPE ORACLE_DATAPUMP
9 DEFAULT DIRECTORY admin_dat_dir
10 LOCATION('TEST.DMP')
11 )
12 AS SELECT ROWNUM MGRNO, MNAME FROM manager;
Table created
Executed in 0.984 seconds
SQL> select * from manager_ext;
MGRNO MNAME
---------- ------------------------------
1 SMITH
2 ALLEN.
3 BLAKE
Executed in 0.156 seconds
这个时候就在admin_dat_dir目录下产生一个二进制文件TEST.DMP,这个文件可以被别的用户,或者数据库用来加载到外部表中,从而实现数据迁移。
以下示例把数据迁移到另一用户的表中。
SQL> connect user_test/test123;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as user_test
SQL> create table manager_ext_loader
2 (
3 MGRNO number,
4 MNAME varchar2(30)
5 )
6 ORGANIZATION EXTERNAL
7 (
8 TYPE ORACLE_DATAPUMP
9 DEFAULT DIRECTORY admin_dat_dir
10 LOCATION('TEST.DMP')
11 );
Table created
Executed in 0.016 seconds
SQL> select * from manager_ext_loader;
select * from manager_ext_loader
ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错
ORA-29400: 数据插件错误KUP-04074: no write access to directory object ADMIN_DAT_DIR
ORA-06512: 在 "SYS.ORACLE_DATAPUMP", line 19
授予写权限:grant write on DIRECTORY admin_dat_dir TO user_test;
SQL> select * from manager_ext_loader;
MGRNO MNAME
---------- ------------------------------
1 SMITH
2 ALLEN.
3 BLAKE
Executed in 0.36 seconds
SQL>
相关推荐
基于 OpenCV 的魔兽世界钓鱼机器人
供应链管理中信息共享问题的研究
青春文学中的爱情观呈现
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
XLSReadWriteII6.02.01.7z
图解系统-小林coding-v1.0
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
漫画作品与乌托邦理想追求
江苏建筑消防设施维护保养规程.rar
内容概要:论文介绍了一款名为DODRIO的交互式可视化工具,帮助自然语言处理(NLP)研究人员和从业者解析基于转换器架构的语言模型内部工作机理。DODRIO整合了概述图与详尽视图,支持用户比较注意力权重与其输入文本的句法结构和语义特征。具体而言,它包含了依赖关系视图(Dependency View)、语义关注图(Semantic Attention Graph)以及注意力头概览(Attention Head Overview),并利用不同的图形展示方法使复杂的多层多头转换器模型中的注意力模式更容易理解和研究。 适用人群:适用于从事深度学习、自然语言处理的研究人员和技术从业者;尤其适合对基于变换器架构的大规模预训练语言模型感兴趣的开发者们。 使用场景及目标:DODRIO用于探索转换器模型各层级之间的联系、验证已有研究成果,同时激发新假设形成。具体使用时可以选择特定数据集中的句子作为样本输入,观察不同注意力机制如何响应文本内容的变化。此外,还可以用来对比精简版本DistilBERT的表现,评估其相对全量模型BERT的优势与不足。 其他说明:DODRIO为开源项目,提供web端实施方式,使得
该代码使用scikit-learn的乳腺癌数据集,完成分类模型训练与评估全流程。主要功能包括:数据标准化、三类模型(逻辑回归、随机森林、SVM)的训练、模型性能评估(分类报告、混淆矩阵、ROC曲线)、随机森林特征重要性分析及学习曲线可视化。通过`train_test_split`划分数据集,`StandardScaler`标准化特征,循环遍历模型进行统一训练和评估。关键实现细节包含:利用`classification_report`输出精确度/召回率等指标,绘制混淆矩阵和ROC曲线量化模型效果,随机森林的特征重要性通过柱状图展示,学习曲线分析模型随训练样本变化的拟合趋势。最终将原始数据和预测结果保存为CSV文件,便于后续分析,并通过matplotlib进行多维度可视化比较。代码结构清晰,实现了数据处理、模型训练、评估与可视化的整合,适用于乳腺癌分类任务的多模型对比分析。
在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。
内容概要:本文档介绍了基于MATLAB实现的贝叶斯优化(BO)、Transformer和GRU相结合的多特征分类预测项目实例,涵盖了详细的程序设计思路和具体代码实现。项目旨在应对数据的多样性与复杂性,提供一种更高效的多特征数据分类解决方案。文档主要内容包括:项目背景与意义,技术难点与解决方案,具体的实施流程如数据处理、模型构建与优化、超参数调优、性能评估以及精美的GUI设计;详细说明了Transformer和GRU在多特征数据分类中的应用及其与贝叶斯优化的有效结合,强调了其理论与实际应用中的价值。 适合人群:具备一定机器学习和MATLAB编程基础的研发人员,特别是从事多维数据处理与预测工作的专业人士和技术爱好者。 使用场景及目标:① 适用于金融、医疗、交通等行业,进行复杂的多维数据处理和预测任务;② 提升现有分类任务中复杂数据处理的准确度和效率,为各行业提供智能预测工具,如金融市场预测、患者病情发展跟踪、交通流量管理等。 其他说明:本文档包含了丰富的实战案例和技术细节,不仅限于模型设计本身,还涉及到数据清洗、模型优化等方面的知识,帮助使用者深入理解每一步骤背后的原理与实现方法。通过完整的代码样例和GUI界面设计指导,读者可以从头到尾跟随文档搭建起一套成熟的分类预测系统。
大数据的sql练习题,初级中级高级
内容概要:论文介绍了名为Transformer的新网络架构,它完全基于自注意力机制,在不使用递归或卷积神经网络的情况下建模输入与输出之间的全局依赖关系,尤其适用于长文本处理。通过多头自注意力层和平行化的全连接前馈网络,使得在机器翻译任务上的表现优于当时最佳模型。具体地,作者用此方法实现了对英语-德语和英语-法语翻译、句法解析等任务的高度并行化计算,并取得显著效果。在实验方面,Transformer在较短训练时间内获得了高质量的翻译结果以及新的单一模型基准。除此之外,研究人员还探索了模型变体的效果及其对于不同参数变化时性能的变化。 适用人群:从事自然语言处理领域的研究者、工程师、学生,熟悉深度学习概念尤其是编码器-解码器模型以及关注模型创新的人士。 使用场景及目标:主要适用于序列到序列(seq2seq)转换任务如机器翻译、语法分析、阅读理解和总结等任务的研究和技术开发;目标在于提高计算效率、缩短训练时间的同时确保模型性能达到或超过现有技术。 其他说明:本文不仅提出了一个新的模型思路,更重要的是展示了自注意力机制相较于传统LSTM或其他方式所拥有的优势,例如更好地捕捉远距离上下文关系的能力
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
自己写的远控木马,欢迎各位大佬改善