26.Oracle11g的数据装载

Oracle11g的数据装载

  • 一、数据装载概述
    • 1、数据装载是什么
    • 2、使用SQL*Loader进行数据装载
  • 二、外部表
    • 1、外部表概念
    • 2、外部表的使用
  • 三、使用外部表数据装载案例
    • 1、创建目标表
    • 2、准备数据源
    • 3、装载数据
    • 4、验证数据

一、数据装载概述

1、数据装载是什么

数据装载是指将数据从一个数据源加载到Oracle 11g数据库中的过程。这个过程通常涉及从外部数据文件、其他数据库或数据源中提取数据,然后将其插入到Oracle 11g数据库的表中。数据装载是ETL(抽取、转换、加载)过程的一部分,用于将外部数据整合到数据库中,以便进行分析、报告和其他数据处理操作。

在Oracle 11g中,数据装载可以通过多种方式实现,包括使用SQL*Loader工具、外部表、PL/SQL程序、以及各种ETL工具(如Oracle Data Integrator)等。无论使用哪种方式,数据装载的基本目标都是将外部数据加载到Oracle 11g数据库中,并确保数据的完整性和准确性。

数据装载通常包括以下步骤:

  1. 准备数据源:准备外部数据文件、其他数据库或数据源,以便从中提取数据。
  2. 创建目标表:在Oracle 11g数据库中创建目标表,用于存储从数据源中提取的数据。
  3. 数据转换:根据需要对数据进行转换和清洗,以确保它符合目标表的结构和数据质量要求。
  4. 数据加载:将转换后的数据插入到目标表中,可以使用SQL*Loader、外部表、PL/SQL程序等工具和技术。
  5. 验证数据:验证目标表中的数据,确保它们与预期的结果一致。

通过数据装载,可以将外部数据整合到Oracle 11g数据库中,为用户和应用程序提供可靠的数据来源,以支持业务决策和分析需求。

2、使用SQL*Loader进行数据装载

  1. 创建一个包含要装载数据的文本文件(例如data.txt),文件内容如下:

    1001,John,Smith,30
    1002,Jane,Doe,25
    1003,Michael,Johnson,35
    
  2. 创建一个控制文件(例如load.ctl),用于指定要装载的数据文件和目标表结构,文件内容如下:

  • 创建语法

    在Oracle 11g中,使用SQL*Loader工具进行数据装载时,需要编写一个控制文件(control file),用于描述数据文件的格式、数据装载的规则和目标表的映射关系。以下是控制文件的语法和主要部分的介绍:

    • LOAD DATA:这是控制文件的起始部分,用于指定数据装载的开始。

    • INFILE:指定要装载的数据文件的路径和名称。

    • INTO TABLE:指定要将数据装载到的目标表的名称。

    • FIELDS TERMINATED BY:指定字段之间的分隔符,如逗号、制表符等。

    • TRAILING NULLCOLS:指示在数据文件中如果没有值时,应将其视为NULL值。

    • (列名1, 列名2, …):指定目标表中要装载数据的列,以及它们在数据文件中的顺序。

    • BOUNDFILLER:用于指示在数据文件中存在但在目标表中不需要的列。

    • BEGINDATA:标识数据装载的开始,其后是实际的数据行。

    需要注意的是,控制文件的语法还包括了很多其他的选项和功能,例如条件装载、数据转换、错误处理等。以上仅是一个简单的示例,实际的控制文件可能会更加复杂和灵活。建议在编写控制文件时,参考Oracle官方文档以获取更详细的语法和选项说明。

  • 具体使用

    LOAD DATA
    INFILE 'data.txt'
    INTO TABLE employee
    FIELDS TERMINATED BY ','
    TRAILING NULLCOLS
    ( emp_id,first_name,last_name,age
    )
    

    在这个示例中,控制文件指定了从名为"data.txt"的数据文件中装载数据到名为"employee"的表中。数据文件中的字段由逗号分隔,分别对应目标表中的EMP_ID、FIRST_NAME、LAST_NAME和AGE列。TRAILING NULLCOLS指示在数据文件中如果某一列的值为空时,应将其视为NULL值。

  1. 创建目标表employee
    您可以使用以下SQL语句在Oracle数据库中创建一个名为"employee"的表,并将提供的数据插入到该表中:

    -- 创建名为"employee"的表
    CREATE TABLE employee (EMP_ID NUMBER(4),      -- 员工ID,数据类型为NUMBER,最大长度为4FIRST_NAME VARCHAR2(50), -- 员工名,数据类型为VARCHAR2,最大长度为50LAST_NAME VARCHAR2(50),  -- 员工姓,数据类型为VARCHAR2,最大长度为50AGE NUMBER(3)           -- 员工年龄,数据类型为NUMBER,最大长度为3
    );

    以上SQL语句首先创建了一个名为"employee"的表,该表包含了EMP_ID、FIRST_NAME、LAST_NAME和AGE等列。然后,使用INSERT INTO语句将提供的数据逐条插入到"employee"表中。这样就完成了在Oracle数据库中创建名为"employee"的表,并将数据插入到该表中的操作。

  2. 使用SQL*Loader命令进行数据装载:

    sqlldr username/password@database control=load.ctl
    

    以上代码中的username、password和database分别是数据库的用户名、密码和数据库名称,load.ctl是上一步创建的控制文件。

通过以上步骤,可以将data.txt文件中的数据装载到名为employee的表中。

除了SQL*Loader外,还可以使用外部表和数据泵等方法进行数据装载。使用外部表可以将外部数据源(如文本文件、Excel文件)映射为数据库中的表,而数据泵是Oracle数据库中用于高速导入和导出数据的工具。

总之,在Oracle 11g中进行数据装载有多种方法可供选择,开发人员可以根据实际需求选择合适的方法进行数据装载操作。

二、外部表

1、外部表概念

在Oracle 11g中,外部表(External Table)是一种特殊的数据库对象,用于将外部数据文件(如文本文件、CSV文件等)以表的形式引入数据库中进行查询和分析。外部表并不存储实际的数据,而是提供了一个结构化的视图,使得用户可以通过SQL语句来访问和操作外部数据文件。

2、外部表的使用

以下是外部表的一些特点和使用方法:

  1. 定义外部表:在Oracle 11g中,可以使用CREATE TABLE语句来定义外部表,与普通表不同的是,外部表需要使用ORGANIZATION EXTERNAL关键字来指定其类型为外部表,并且需要指定外部数据文件的存储路径、格式和结构。

    CREATE TABLE ext_sales(sale_id NUMBER,sale_date DATE,customer_id NUMBER,amount_sold NUMBER)ORGANIZATION EXTERNAL  -- 指定了这是一个外部表,而不是普通的数据库表。(TYPE ORACLE_LOADER    -- 指定了外部表的类型为ORACLE_LOADER,表示使用Oracle Loader来访问外部数据文件。DEFAULT DIRECTORY ext_dir ACCESS PARAMETERS(FIELDS TERMINATED BY ','LOCATION ('sales_data.csv')))REJECT LIMIT UNLIMITED;
    

    这是一个用于创建外部表的SQL语句,下面是对每个部分的详细注释:

    • CREATE TABLE ext_sales: 这部分定义了要创建的外部表的名称为ext_sales。

    • (sale_id NUMBER, sale_date DATE, customer_id NUMBER, amount_sold NUMBER): 这部分定义了外部表的列,包括sale_id(销售ID)、sale_date(销售日期)、customer_id(客户ID)和amount_sold(销售金额)。每个列都有相应的数据类型。

    • ORGANIZATION EXTERNAL: 这部分指定了这是一个外部表,而不是普通的数据库表。

    • (TYPE ORACLE_LOADER: 这部分指定了外部表的类型为ORACLE_LOADER,表示使用Oracle Loader来访问外部数据文件。

    • DEFAULT DIRECTORY ext_dir: 这部分指定了外部数据文件所在的默认目录名称为ext_dir。在Oracle数据库中,DEFAULT DIRECTORY是一个数据库对象,用于指定外部文件所在的目录。

    • ACCESS PARAMETERS: 这部分指定了外部表的存取参数,用于定义如何访问外部数据文件。

    • (FIELDS TERMINATED BY ',': 这部分定义了外部数据文件中字段的分隔符为逗号。这表示外部数据文件中的每一行数据都是由逗号分隔的字段组成。

    • LOCATION ('sales_data.csv')): 这部分指定了外部数据文件的位置为sales_data.csv。这表示外部表将从sales_data.csv文件中读取数据。

    • REJECT LIMIT UNLIMITED: 这部分指定了在数据装载时的拒绝记录限制,这里设置为UNLIMITED表示没有限制,即允许所有记录都被装载。

    综合起来,这个SQL语句创建了一个名为ext_sales的外部表,它使用Oracle Loader来访问名为sales_data.csv的外部数据文件,文件存储在ext_dir目录中。外部表的列和外部数据文件的字段之间通过字段分隔符进行对应,以便正确地读取和解析数据。
    在上面的示例中,ext_sales是一个外部表,它使用了Oracle Loader来访问名为sales_data.csv的数据文件,该文件存储在名为ext_dir的目录中。外部表的列和数据文件的字段之间需要进行对应,以便正确地读取和解析数据。

  2. 查询外部表:一旦定义了外部表,就可以像普通表一样使用SELECT语句来查询外部数据文件中的数据。

    SELECT * FROM ext_sales;
    

    通过这种方式,用户可以直接在数据库中使用SQL语句来对外部数据文件中的数据进行查询和分析,而无需将数据导入到数据库表中。

  3. 数据装载:外部表也可以用来进行数据装载,类似于SQL*Loader的功能。通过外部表,可以将外部数据文件中的数据装载到数据库中的普通表中,实现数据的导入和整合。

  4. 要查看已存在的外部表,您可以使用以下SQL查询:

    SELECT table_name
    FROM user_tables
    WHERE table_type = 'EXTERNAL TABLE';
    

    这条查询将返回当前用户拥有的所有外部表的名称。您也可以根据需要修改查询条件,以适应您的权限和数据库架构。

总的来说,外部表是Oracle 11g中一个非常有用的功能,它使得用户可以方便地访问和操作外部数据文件中的数据,同时也可以用于数据装载和整合。需要注意的是,外部表并不适合用于大规模的数据分析和处理,因为它并不会将数据存储在数据库中,而是在查询时动态地读取外部数据文件。

三、使用外部表数据装载案例

Oracle 11g数据装载的具体过程分为以下几个步骤:

1、创建目标表

在Oracle 11g中,我们可以使用CREATE TABLE语句来创建目标表。例如,以下是创建一个名为EMPLOYEE的表的示例代码:

CREATE TABLE EMPLOYEE
(EMP_ID NUMBER(10),EMP_NAME VARCHAR2(50),EMP_DEPT VARCHAR2(50),EMP_SALARY NUMBER(10,2));

2、准备数据源

数据源可以是一个文本文件、Excel文件、CSV文件、XML文件、Oracle数据库或其他数据库等。在Oracle 11g中,我们可以使用外部表来访问数据源。外部表是一个虚拟表,它与实际数据源中的数据相关联。以下是创建一个名为EMPLOYEE_EXT的外部表的示例代码:

-- 创建外部表EMPLOYEE_EXT用于访问外部数据源
CREATE TABLE EMPLOYEE_EXT
(EMP_ID NUMBER(10),     -- 员工ID,数据类型为NUMBER,最大长度为10EMP_NAME VARCHAR2(50), -- 员工姓名,数据类型为VARCHAR2,最大长度为50EMP_DEPT VARCHAR2(50), -- 员工部门,数据类型为VARCHAR2,最大长度为50EMP_SALARY NUMBER(10,2) -- 员工薪水,数据类型为NUMBER,总长度为10,小数位为2
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER     -- 外部表类型为ORACLE_LOADER,表示使用Oracle的加载程序来访问外部数据DEFAULT DIRECTORY DATA_DIR  -- 指定默认目录为DATA_DIR,用于存放外部数据文件ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE  -- 指定记录分隔符为换行符FIELDS TERMINATED BY ','      -- 指定字段分隔符为逗号MISSING FIELD VALUES ARE NULL -- 指定缺失字段值为NULL(EMP_ID,        -- 映射外部数据文件中的EMP_ID列EMP_NAME,      -- 映射外部数据文件中的EMP_NAME列EMP_DEPT,      -- 映射外部数据文件中的EMP_DEPT列EMP_SALARY     -- 映射外部数据文件中的EMP_SALARY列))LOCATION ('employee.csv')  -- 指定外部数据文件的位置为employee.csv
);

在上面的代码中,我们使用ORACLE_LOADER访问一个名为employee.csv的CSV文件。数据文件位于DATA_DIR目录中。我们还指定了记录分隔符和字段分隔符。

3、装载数据

在Oracle 11g中,我们可以使用INSERT INTO SELECT语句将数据从外部表插入到目标表中。以下是一个示例代码:

INSERT INTO EMPLOYEESELECT EMP_ID, EMP_NAME, EMP_DEPT, EMP_SALARYFROM EMPLOYEE_EXT;

在上面的代码中,我们将EMPLOYEE_EXT外部表中的数据插入到EMPLOYEE目标表中。

4、验证数据

在完成数据装载后,我们应该验证目标表中的数据是否正确。我们可以使用SELECT语句查询目标表中的数据,以确保它们与预期的结果一致。

以上是Oracle 11g数据装载外部表的基本使用案例。具体的数据装载过程可能因数据源类型、数据量、数据质量等因素而有所不同。但是,以上步骤和示例代码可以作为一个起点,帮助您开始使用Oracle 11g进行数据装载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③ 2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷③A模块基础设施设置/安全加固(200分)A-1任务一 登录安全加固(Wi…

400页Python学习PDF笔记,全面总结零基础入门看这一篇足够了

我们都知道Python入门比较简单,但仍有很多想要学习的新手依然卡在基础的安装阶段,尽管如此,网络上的大部分的教程却对这些基础内容都是一带而过,导致许多新手朋友对这些基础知识一知半解,往往一个小问题都需要在网上查…

2023 iOS 八股文

题集大全 1: 谈谈你对KVC的理解 2: iOS项目中引用多个第三方库引发冲突的解决方法 3: GCD实现多读单写 4: 讲一下atomic的实现机制;为什么不能保证绝对的线程安全? 5: Autoreleasepool所使用的数据结构是什么? 6: AutoreleasePoolPage结构体了解么? 7: iOS中内省的几个…

电脑回收站还原的文件在哪里找到?如何找回回收站还原的文件

电脑回收站是一种非常有用的功能,可以帮助我们恢复无意中删除的文件。然而,许多人可能不清楚还原的文件在哪里可以找到。本文将为您带来详细解答,并帮助您找回回收站还原的文件。 电脑回收站还原的文件在哪里找到 当我们使用电脑的回收站功…

element的el-date-picker时间控件,限制选择范围区间天数并且当前之后的日期不可选

element的el-date-picker时间控件&#xff0c;限制选择范围区间天数并且当前之后的日期不可选 HTML部分代码 <el-date-pickerv-model"dateRange"type"datetimerange"value-format"yyyy-MM-dd HH:mm:ss"range-separator"至"start-p…

前端知识笔记(二十三)———云服务器网站遇到HTTPS CC攻击了,有什么办法吗?

目前网站使用SSL证书&#xff0c;用443端口的情况非常普遍&#xff0c;大多数网站&#xff0c;用户都是会选择用证书&#xff0c;这样不仅可以提供数据传输的安全性&#xff0c;增强用户信任和品牌形象&#xff0c;还可以提高网站在搜索结果中的排名&#xff0c;从而增加流量和…

element 弹窗在弹出后鼠标还可以点击页面其他元素

文章目录 需求分析需求 如下图所示,在点击弹出弹框后,支持 鼠标可点击弹框外的其他地方可拖拽弹框弹出弹出后不可有遮挡弹出样式可自定义 分析 官网:https://vxetable.cn/v4/#/table/start/install 安装 vxe-table 引入import {App, createApp }

速达软件全系产品任意文件上传漏洞复现 [附POC]

文章目录 速达软件全系产品任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 速达软件全系产品任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技…

常见js hook脚本

一.js hook 过无限debugger var _constructor constructor; Function.prototype.constructor function(s) {if (s "debugger") {console.log(s);return null;}return _constructor(s); }//去除无限debugger Function.prototype.__constructor_back Function.pro…

centos安装Python3之后yum不能使用异常

场景&#xff1a; 需要在centos上安装Python3&#xff0c;但是安装Python3之后出现yum不能使用的问题。 问题描述 在centos上安装python3之后出现yum使用不了问题&#xff0c;使用yum会报如下信息&#xff1a; [roothadoop101~]# yum install wgetFile "/usr/bin/yum&q…

旋转框(obb)目标检测计算iou的方法

首先先定义一组多边形&#xff0c;这里的数据来自前后帧的检测结果 pre [[[860.0, 374.0], [823.38, 435.23], [716.38, 371.23], [753.0, 310.0]],[[829.0, 465.0], [826.22, 544.01], [684.0, 539.0], [686.78, 459.99]],[[885.72, 574.95], [891.0, 648.0], [725.0, 660.0]…

Matlab论文插图绘制模板第129期—函数网格曲面图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 进一步&#xff0c;再来分享一下函数网格曲面图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自…

activemq启动成功但web管理页面却无法访问

前提&#xff1a; 在linux启动activemq成功&#xff01;本地能ping通linux 处理方案&#xff1a; 确定防火墙是否关闭&#xff0c; 有两种处理方案&#xff1a;第一种-关闭防火墙&#xff1b;第二种-暴漏8161和61616两个端口 netstat -lnpt查看8161和61616端口 注意&#xf…

python中序列类型运算符

python中序列类型运算符 Python 中的序列类型运算符用于对序列&#xff08;如列表、元组和字符串&#xff09;进行操作。下面是一些常见的序列类型运算符&#xff1a; 索引&#xff1a;使用索引运算符 [] 可以通过索引访问序列中的元素。索引从 0 开始&#xff0c;可以是正数…

网络细节核心笔记

来源&#xff0c;做个笔记&#xff0c;讲的还蛮清楚通信原理-2.5 数据封装与传输05_哔哩哔哩_bilibili 交换机

【MySQL 50题进阶练习】

Mysql 50题进阶练习 数据表介绍建表语句插入数据练习题目1.查询" 01 “课程⽐” 02 "课程成绩⾼的学⽣的信息及课程分数2.查询同时存在" 01 “课程和” 02 "课程的情况3.查询存在" 01 “课程但可能不存在” 02 "课程的情况(不存在时显示为 null …

慈善始于心,行善贵有恒 | 中创开展“寒冬送温暖”公益活动

岁暮隆冬&#xff0c;冷霜挂睫&#xff0c;前往尖山村的路上雾气弥漫&#xff0c;弯弯绕绕的山路需要开车一小时才能到达目的地。对许多人来说&#xff0c;这或许是一段漫长而艰辛的路程&#xff0c;但对于那些生活在山区的贫困儿童而言&#xff0c;这条山路却是通往外界的唯一…

IEEE 机器人最优控制开源库 Model-based Optimization for Robotics

系列文章目录 文章目录 系列文章目录前言一、开源的库和工具箱1.1 ACADO1.2 CasADi1.3 Control Toolbox1.4 Crocoddyl1.5 Ipopt1.6 Manopt1.7 LexLS1.8 NLOpt1.9 qpOASES1.10 qpSWIFT1.11 Roboptim 二、其他库和工具箱2.1 MUSCOD2.2 OCPID-DAE12.3 SNOPT 前言 机器人&#xff…

python爬虫基础html内容解析库BeautifulSoup

我们通过Requests请求url获取数据&#xff0c;请求把数据返回来之后就要提取目标数据&#xff0c;不同的网站返回的内容通常有多种不同的格式&#xff0c;一种是 json 格式&#xff0c;我们可以直接通过json.loads转换python的json对象处理。另一种 XML 格式的&#xff0c;还有…

【一个超简单的爬虫demo】探索新浪网:使用 Python 爬虫获取动态网页数据

探索新浪网&#xff1a;使用 Python 爬虫获取动态网页数据 引言准备工作选择目标新浪网的结构 编写爬虫代码爬取example.com爬取新浪首页部分内容解析代码注意&#xff1a; KeyError: href结果与展示 其他修改和适应注意事项 总结 引言 可以实战教爬虫吗&#xff0c;搭个环境尝…