Oracle外部表
https://developer.aliyun.com/article/1114792?spm=a2c6h.14164896.0.0.335f1abemY46wB
创建一个文件
vi 1.txt
1 2 3 4 5 6 7 8 9 10 11 | NAME;NAME_DESC Latiny1;latiny test file Latiny2;latiny test file Latiny3;latiny test file Latiny4;latiny test file Latiny5;latiny test file Latiny6;latiny test file Latiny7;latiny test file Latiny8;latiny test file Latiny9;latiny test file Latiny10;latiny test file |
创建directory
1 2 3 4 | 创建一个Directory:必须用sys用户创建,用户存放外部数据文件。 create directory EXT_LOG as '/home/oracle/' ; 给用户授权目录的使用权限,否则用户不能访问该目录以及其下的文件 grant write,read on directory EXT_LOG to HR; |
导入外部文件创建表
1 2 | DROP TABLE ALERT_LOG; create table ALERT_LOG<br>(<br>name char (256),<br>name_desc char (256)<br>)<br>organization external<br>(<br>type oracle_loader<br> default directory EXT_LOG <br>access parameters<br>(<br>records delimited by newline<br>badfile dir_ctrr_data: 'test..bad' <br>logfile dir_ctrr_data: 'test..log' <br>discardfile dir_ctrr_data: 'test..dsc' <br>skip 1<br>fields terminated by ';' <br>reject rows with all null fields<br>(<br>NAME char (256),<br>NAME_DESC char (256)<br>)<br>)<br>location ( '1.txt' )<br>)<br>reject limit unlimited<br>parallel; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SQL> select * from ALERT_LOG; NAME NAME_DESC -------------------- -------------------- Latiny1 latiny test file Latiny2 latiny test file Latiny3 latiny test file Latiny4 latiny test file Latiny5 latiny test file Latiny6 latiny test file Latiny7 latiny test file Latiny8 latiny test file Latiny9 latiny test file Latiny10 latiny test file 10 rows selected. |
参数说明:
1) organization external -- 关键字,必须要有。以表明定义的表为外部表。
2) type -- 外部表的类型
oracle_loader -- 定义外部表的缺省方式,只能只读方式实现文本数据的装载。
oracle_datapump -- 支持对数据的装载与卸载,数据文件必须为二进制dump文件。可以从外部表提取数据装载到内部表,也可以从内部表卸载数据作为二进制文件填充到外部表。
3) default directory --缺省的目录指明了外部文件所在的路径
4) location -- 定义了外部表的位置
5) access parameters -- 描述如何对外部表进行访问
records -- 关键字后定义如何识别数据行
delimited by \'xxx\' --换行符,常用newline定义换行,并指明字符集。对于特殊的字符则需要单独定义,如特殊符号,可以使用ox\'十六位值\',例如tab(/t)的十六位是9,则delimitedby0x\'09\';cr(/r)的十六位是d,那么就是delimitedby0x\'0d\'。
skip x -- 跳过x行数据,有些文件中第一行是列名,需要跳过第一行,则使用skip 1。
fields -- 关键字后定义如何识别字段,常用的如下:
fields:terminated by \'x\' --字段分割符。
enclosed by \'x\' --字段引用符,包含在此符号内的数据都当成一个字段。例如一行数据格式如:"abc","a""b,""c,"。使用参数terminated by \',\' enclosed by \'"\'后,系统会读到两个字段,第一个字段的值是abc,第二个字段值是a"b,"c,。
lrtrim --删除首尾空白字符。
missing field values are null --某些字段空缺值都设为null。对于字段长度和分割符不确定且准备用作外部表文件,可以使用ultraedit、editplus等来进行分析测试,如果文件较大,则需要考虑将文件分割成小文件并从中提取数据进行测试。
6) fields terminated by "," --描述字段的终止符
7) reject limit unlimited --描述允许的错误数,此处为无限制
https://www.likecs.com/show-405464.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)