Oracle 创建并使用外部表

devtools/2025/1/23 15:19:55/

目录

  • 一. 什么是外部表
  • 二. 创建外部表所在的文件夹对象
  • 三. 授予访问外部表文件夹的权限
    • 3.1 DBA用户授予普通用户访问外部表文件夹的权限
    • 3.2 授予Win10上的Oracle用户访问桌面文件夹的权限
  • 四. 普通用户创建外部表
  • 五. 查询
  • 六. 删除


一. 什么是外部表

  • 在 Oracle 数据库中,外部表(External Table)是一种特殊类型的表,它允许数据库直接访问外部文件(如 CSV 文件、文本文件等),并将这些文件的内容视为表数据进行查询。
  • 外部表本质上是一个逻辑表,它不会在数据库中存储实际的数据,而是通过指定的文件位置直接访问数据文件。

⏹外部表的特点

  • 无需存储数据:外部表的数据存储在外部文件系统中,而不是数据库表空间内。这意味着外部表只是一个映射,使得数据库可以通过 SQL 查询来访问存储在文件中的数据。
  • 直接访问外部数据:外部表允许您通过 SQL 查询直接访问外部文件中的数据,而无需将数据导入数据库。这对于处理大量的文件数据特别有用。
  • 支持大数据量处理:外部表非常适合处理大量外部数据文件,您可以像查询数据库表一样查询这些文件内容。
  • 支持多种文件格式:外部表支持多种不同的文件格式,如 CSV、固定宽度文本文件、分隔符分隔的文件等。

二. 创建外部表所在的文件夹对象

⏹在Oracle安装的Win10上准备好外部表所用到csv数据库文件。

在这里插入图片描述

"1","Name_1","41","user1@example.com","2024/05/20 13:05:39"
"2","Name_2","57","user2@example.com","2024/07/29 13:05:39"
"3","Name_3","44","user3@example.com","2024/10/11 13:05:39"
"4","Name_4","24","user4@example.com","2024/04/24 13:05:39"
"5","Name_5","42","user5@example.com","2024/02/21 13:05:39"
"6","Name_6","56","user6@example.com","2024/02/18 13:05:39"

⏹创建外部表所在的文件夹对象

  • 需要使用DBA用户
  • DBA用户所在的容器应该是PDB,而不是CDB
  • 因为我们的Oracle数据库安装在Win10上,所以文件夹路径需要Win10上的路径
# DBA用户切换容器为PDB
SQL>  ALTER SESSION SET CONTAINER = XEPDB1;Session altered.# 确认当前容器
SQL> SHOW CON_NAME;CON_NAME
------------------------------
XEPDB1
SQL>
SQL> CREATE OR REPLACE DIRECTORY PERSON_TABLE_EXT AS 'C:/Users/FengYeHong/Desktop';Directory created.# 确认文件夹对象已经创建完毕
SQL> SELECT directory_name, directory_path FROM all_directories WHERE directory_name = 'PERSON_TABLE_EXT';DIRECTORY_NAME             DIRECTORY_PATH
----------------           ---------------------------
PERSON_TABLE_EXT           C:/Users/FengYeHong/Desktop

三. 授予访问外部表文件夹的权限

3.1 DBA用户授予普通用户访问外部表文件夹的权限

SQL> GRANT READ, WRITE ON DIRECTORY PERSON_TABLE_EXT TO "DB_USER";Grant succeeded.

3.2 授予Win10上的Oracle用户访问桌面文件夹的权限

⏹通过services.msc打开服务,然后找到OracleServiceXE服务

在这里插入图片描述

⏹打开OracleServiceXE服务的属性,然后在登录选项卡中找到当前oracle服务的用户名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四. 普通用户创建外部表

  • 创建一个外部表,名称叫做PERSON_TABLE_TEST
  • CREATED_DATE DATE "yyyy/mm/dd hh24:mi:ss":指定日期的格式
  • LOCATION ('person_data.csv'),指定加载外部表所在文件夹中的person_data.csv文件。
CREATE TABLE PERSON_TABLE_TEST ("ID" NUMBER, "NAME" VARCHAR2(50), "AGE" NUMBER, "EMAIL" VARCHAR2(100), "CREATED_DATE" DATE
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADERDEFAULT DIRECTORY PERSON_TABLE_EXTACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINEFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'(ID, NAME, AGE, EMAIL, CREATED_DATE DATE "yyyy/mm/dd hh24:mi:ss"))LOCATION ('person_data.csv')
)
REJECT LIMIT UNLIMITED;

五. 查询

⏹查询外部表是否真的创建成功

SQL> SELECT TABLE_NAME FROM USER_EXTERNAL_TABLES WHERE TABLE_NAME = 'PERSON_TABLE_TEST';TABLE_NAME
--------------------------------------------------------------------------------
PERSON_TABLE_TEST

⏹查询外部表中的数据

  • 就像查询普通表一样
  • 外部表还可以和数据库中的表进行关联查询

在这里插入图片描述


六. 删除

⏹普通用户删除外部表,和删除普通表相同

DROP TABLE PERSON_TABLE_TEST;

⏹DBA用户删除外部表所在的目录

-- PERSON_TABLE_EXT 是目录的别名
DROP DIRECTORY PERSON_TABLE_EXT;

http://www.ppmy.cn/devtools/152916.html

相关文章

【MySQL】C# 连接MySQL

C# 连接MySQL 1. 添加MySQL引用 安装完MySQL之后,在安装的默认目录 C:Program Files (x86)MySQLConnector NET 8.0 中查找MySQLData.dll文件。 在Visual Studio 中为项目中添加引用。 2. 引入命名空间 using MySql.Data.MySqlClient;3. 构建连接 private sta…

在电商行业中,3D模型的应用有哪些?

在电商行业中,3D模型的应用已经变得日益广泛和重要。以下是一些电商行业如何应用3D模型的具体方式: 一、商品3D展示 1、三维呈现: 通过3D技术,商品可以在电商平台上以三维形式呈现,消费者可以720旋转、缩放查看商品…

JRE、JVM 和 JDK 的区别

Java 的运行和开发环境中,有三个重要的概念:JRE、JVM 和 JDK。 1. JVM (Java Virtual Machine) 定义:Java 虚拟机,是运行 Java 程序的虚拟环境。作用: 执行 .class 字节码文件。提供内存管理、垃圾回收和安全机制。不…

Jmeter进行http接口测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤(1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径&#xf…

【一个按钮一个LED】用STM32F030单片机实现苹果充电器的定时装置

文章目录 前言一、要实现的功能1、循环定时2、倒计时3、指示灯提示4、使用场景二、实现方法1、使用方法2、电路设计三、程序代码和成品1.定时中断子程序2.键值处理3.主函数总结前言 笔者前几年买苹果手机、IPAD配的适配器是A1443型号,这种5V1A,USB-A口、小功率的适配器,苹果…

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库(Monorepo)搭建指南:从零开始 单体仓库(Monorepo)是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置,并简化依赖管理。本文将通过实际代码示例&#xff0…

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理(进行宏替换)2.2 编译(生成汇编)2.3 汇编(生成机器可识别代码)2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…

linux下fcntl的概念和使用

fcntl 是 Linux 系统调用之一,用于执行各种与文件描述符相关的操作。它提供了对打开文件的控制,包括复制文件描述符、设置文件状态标志、获取和设置文件描述符标志等。fcntl 的功能非常广泛,可以用来实现多种不同的任务,如锁文件、…