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

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;

        然后再把这个表的数据迁到你想要还原的表里。

http://www.xdnf.cn/news/592903.html

相关文章:

  • 车载诊断数据 --- DiagnosticExtract AUTOSAR诊断数据库DEXT
  • BLIP3-o: 全开源多模态统一模型,先理解后生成,详细解读
  • 第六部分:第六节 - TypeScript 与 NestJS:打造类型安全的厨房管理流程
  • 3356. 零数组变换 II
  • Spring Boot 多租户架构实现:基于上下文自动传递的独立资源隔离方案
  • 为什么mosquitto 禁用了 topic “#“后,无法使用主题中包含%c client_id了?
  • python容器
  • PTA刷题笔记
  • 浏览器原生 Web Crypto API 实现 SHA256 Hash 加密
  • 六:操作系统虚拟内容之内存文件映射
  • DeepSeek的进阶应用场景大全
  • poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时
  • 《告别单一智能:神经符号混合系统驱动推理能力的跨界融合》
  • 哈希表和容器中添加元素的方法
  • 什么是CDN(Content Delivery Network,内容分发网络)
  • ubunt配置本地源
  • Linux开发板串口终端会限制命令字符数并且循环覆盖
  • 并发编程 之 TreeMap ConcurrentSkipListMap set queue源码分析
  • 自动化测试报告工具
  • 【八股战神篇】Redis高频面试题
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月22日第85弹
  • 数据结构知识点汇总
  • 速卖通关键词搜索API开发指南
  • 简单说一下px和ex 的区别......
  • 测试文章1
  • ATGM336H-6N_GNSS 单频多模定位导航模块
  • IEEE Wireless Communications 2025年1月-4月论文速览
  • 二十一、面向对象底层逻辑-scope作用域接口设计
  • 05算法学习_59. 螺旋矩阵 II
  • 如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞