需求场景:data.txt源数据:[INFO]2012-12-0100:01:171610FHR行号=24.查看指定计划的钢卷数据.计划号=121200102.[INFO]2012-12-0100:03:131610FHR行号=24.查看指
需求场景:
data.txt源数据:
[INFO] 2012-12-01 00:01:17 1610 FHR "行号=24. 查看指定计划的钢卷数据. 计划号=121200102." [INFO] 2012-12-01 00:03:13 1610 FHR "行号=24. 查看指定计划的钢卷数据. 计划号=121200103." [INFO] 2012-12-01 00:20:21 7362 RICC "IntervalTime=0,RollingTime=0" [INFO] 2012-12-01 00:20:21 7363 RICC "WRTFMOff: 24.5, 24.8, 24.9, 25.1, 25.3, 25.3, 25.4, 26.5[C]." [INFO] 2012-12-01 00:20:21 7362 RICC "IntervalTime=0, RollingTime=0, WRTFMOff:fT=24.632685"
拿到这一份源数据后,第一眼我们看到像这种类型的数据就是应该使用sql*loader工具。把该源文件的数据导入到oracle数据库。
那么,我们先来熟悉一下这个工具:
一、sql*loader的概述
很多情况之下,我们的数据需要批量处理传输到库,或者在库之间批量传输数据。其中,常见
的情形是用从事务处理系统提取的数据填充数据仓库,或将数据从实时系统复制到测试开发环境。对
大规模操作而言,使用标准的INSERT语句插入数据并不总是最佳方式,而oracle本身附带了SQL*Loader和Data Pump功能来支持批量操作。通过使用外部表,还可以在不将数据插入数据库的情况下读取数据。
从体系结构上讲,SQL*Loader进程与其他用户进程类似:它通过服务器进程连接到数据库。
要插入行,可以采用两种技术:常规方式或直接路径读取。常规方式是使用INSERT。SQL*Loader用户进程构造values子句中包含绑定变量的insert语句,然后读取源数据文件,为每一个要插入的行执行
一次insert。此方法使用数据库缓冲区缓存,并生成撤销(undo)和重做数据(redo log),这些insert
语句与其他同类语句相似,通过普通的提交处理实现数据永久化。
直接路径是避开了database buffer,sql*loader读取源数据文件,并将内容发送到服务器进程。
此后,美国服务器,服务器进程在其PGA中组装表数据中的块,并将它们直接写入数据文件。写操作在表的高水位
线上完成,称为数据保存(data save)。高水位线是表段中的一个标记,其上未写入任何数据:高水
位线上的空间是分配给尚未使用的表的空间。加载完成后,服务器空间,sql*loader移动高水位线,免备案空间,从而包含最新
写入的数据块,并且其他用户都可以立即看见这些数据块内的行。上述操作相当于一个commit命令。
此时不会生成撤销,也可以主动的取消重做日志的生成。所以说,直接路径加载是很快捷的。
二、SQL*Loader直接路径缺点
直接路径也存在以下缺点:
1、执行操作期间,必须删除或禁用引用完整性约束(只能实施unique、primary key、not null约束)。
2、会将针对其他会话的DML锁定表
3、不会激活insert触发器
4、无法为群集表使用
sql*loader体系结构:
三、实际操作演示
好了,这里没办法说得太细节化,相关的知识大家自己补充。
新建一个测试表TEST(我们要把源数据导入这个表):
SQL>conn hr/oracle@testdb
SQL> create table test(
2 name varchar2(10),
3 indate varchar2(20),
4 intime varchar2(20),
5 num int,
6 source varchar2(10),
7 description varchar2(128)
8 );
准备好data.txt、data_test.ctl(加载所要使用的控制文件,定义数据规则的)
data_test.ctl:
sqlldr这个命令就是sql*loader工具,是在$ORACLE_HOME/bin目录下
C:\Documents and Settings\Administrator>sqlldr hr/oracle@testdb control=E:\oracle\exercises\data_test.ctl log=E:\oracle\exercises\data_test.log
3 小时前 上传
下载附件(39.43 KB)
查询下结果:
3 小时前 上传
下载附件(39.34 KB)
到此为止,提出的需求已经完成。关于控制文件里面的命令是什么意思,有时间的话下次解释一下或者留点给大家自己去学习吧。希望大家可以相互参与到讨论当中,相互提高自己!
本文出自 “海斌的技术博客” 博客,转载请与作者联系!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境