当前位置: 首页 > article >正文

Oracle 创建外部表

        找别人要一下数据,但是他发来一个 xxx.csv 文件,怎么办?

1、使用视图化工具导入

       使用导入工具导入,如 DBeaver,右击要导入的表,选择导入数据。

         选择对应的 csv 文件,下一步就行了(如果出现导入后乱码,可以考虑一下字符集的问题)。

        但是,有时候数据量很大,几十上百万的数据的时候,就会出现加载到多少条就卡住不动了,这个时候,就可以考虑一下先创建一个临时的外部表。

2、 创建外部表

原表:

create table TEST.test01(user_name varchar2(32),age number(3,0),height number(4,1)
)

原数据:

csv 文件(不同的打开方式,显示的会不一样):

        在 Oracle 数据库中,外部表是一种特殊类型的表,它并不将数据实际存储在数据库内部,而是提供了一种直接访问存储在数据库外部文件中数据的方式,就好像这些数据是存储在数据库表中一样。

1)创建逻辑目录(需DBA权限)

CREATE DIRECTORY restore AS 'D:\Oracle19c\restore';

2)授予用户对这个目录的读写权限 

GRANT READ, WRITE ON DIRECTORY restore TO TEST;

3)创建外部表

        上面的建表语句就跟原始表一样就行。

CREATE TABLE TEST.test02 (user_name varchar2(32),age number(3,0),height number(4,1)
)
ORGANIZATION external (type oracle_loaderdefault directory restoreaccess parameters(records delimited by newlineskip 1badfile 'bad.txt'logfile 'log.txt'fields terminated by ","ENCLOSED BY '"'missing field values are null)location('test.csv')
);

注释: 

ORGANIZATION external :创建外部表的组织部分,指定外部表的相关属性
type oracle_loader:指定外部表的类型为 oracle_loader,这是 Oracle 提供的用于加载外部数据的接口类型
default directory restore:指定默认的目录对象,该目录对象需要提前创建,用于指定外部文件所在的路径
access parameters: 定义访问外部文件的参数,这些参数告诉 Oracle 如何读取外部文件
records delimited by newline:指定记录的分隔符为换行符,意味着每一行就是一个记录
skip 1:跳过文件的第一行,通常用于跳过表头
badfile 'bad.txt':指定坏文件的名称,当在加载数据过程中遇到不符合规则的数据时,这些数据会被记录到该文件中
logfile 'log.txt':指定日志文件的名称,在加载数据过程中的详细信息,如错误信息、处理进度等会被记录到该文件中
fields terminated by ",":指定字段之间的分隔符为逗号,即文件中每一行的数据是通过逗号来分隔不同字段的
ENCLOSED BY '"':指定字段值是被双引号包围的,当字段值中包含分隔符或特殊字符时,使用双引号可以正确解析字段值
missing field values are null:当某个字段的值缺失时,将其视为 NULL 值
location('test.csv'):指定外部文件的位置,这里的文件名是 test.csv,文件应位于 restore 目录对象所指向的路径下

        提示:这里要把 csv 文件放到刚才创建的逻辑目录对应的实际目录下。

3)建立好之后,查询可能会提示

        只需要在查询前执行以下这句话,修改 Oracle 外部表(TEST.test02)的拒绝限制设置。

ALTER TABLE TEST.test02 reject LIMIT unlimited;

        再进行查询,就没问题了。

select * from TEST.test02;

        然后再把这个表的数据迁到你想要还原的表里,或者直接用这个表的数据,新建一张表。

CREATE TABLE TEST.test03 AS SELECT * FROM TEST.test02

        这样就相当于把 csv 文件还原到数据库了。

http://www.lryc.cn/news/2384189.html

相关文章:

  • 大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置
  • 【软考向】Chapter 9 数据库技术基础
  • 实战:Dify智能体+Java=自动化运营工具!
  • STM32单片机GUI系统1 GUI基本内容
  • 从零开始学习three.js(21):一文详解three.js中的矩阵Matrix和向量Vector
  • 应届本科生简历制作指南
  • VUE3+TS实现图片缩放移动弹窗
  • 大语言模型训练数据格式:Alpaca 和 ShareGPT
  • 实现动态增QuartzJob,通过自定义注解调用相应方法
  • PyTorch可视化工具——使用Visdom进行深度学习可视化
  • Qt无边框界面添加鼠标事件
  • 企业级爬虫进阶开发指南
  • Ubuntu ping网络没有问题,但是浏览器无法访问到网络
  • 网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
  • 数据结构实验10.1:内部排序的基本运算
  • C#:多线程
  • 基于Zynq SDK的LWIP UDP组播开发实战指南
  • c#将json字符串转换为对象数组
  • 机器学习在智能水泥基复合材料中的应用与实践
  • wps编辑技巧
  • 开放世界RPG:无缝地图与动态任务的拓扑学架构
  • 【图像处理入门】1. 数字图像的本质:从像素到色彩模型
  • (已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop
  • Ubuntu20.04部署KVM
  • OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()
  • 计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)
  • 可视化图解算法43:数组中的逆序对
  • 【Python】使用Python实现调用API获取图片存储到本地
  • 腾讯2025年校招笔试真题手撕(一)
  • Vue3 与 Vue2 区别