日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle 原理:数据装载 ,SQLldr ,外部表

發布時間:2024/10/14 数据库 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 原理:数据装载 ,SQLldr ,外部表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、導入 SQLldr

SQL*LOADER可以把txt文件,Excel文件導入到數據庫中。使用SQLloader導入導出需要一個數據文件和一個控制文件。數據文件中存了你需要導入的數據,控制文件中寫你需要怎么導入這些數據。

LOAD DATA infile 'e:\aa.csv' ## 源文件路徑,路徑不要包括中文 into table xx_temp <impcmd> ## 要導入的表 (id terminated by whitespace  ## id 為列名,whitespace 表示列之間使用空格來區分,如果是其他的 ‘|’ 方式則使用 terminated by '|' 逗號則用逗號.以此類推 ) ## 換行 也是自動終止字段讀的標識

其中 impcmd 中 可以被4個值替換分別是insert (缺省默認值),append,replace,truncate

insert: 插入數據,要求表為空

append:追加數據,在原來表的基礎上再插入數據

replace :刪除原表數據,再插入

truncate:刪除原表數據,再插入,比replace 更高效

例如有這么張表

create table salary_tbl(employer_nm varchar(20) ,department varchar(20) not null,salary number not null,leader_nm varchar(20) )

新建一個.txt文件用于存數據,可以自定義分隔符來區分字段

新建一個ctl 以字符 '?|' 分割?

或者這樣寫更簡便

load data infile 'data1.txt' into table SALARY_TBL append fields terminated by '|'(employer_nm ,department ,salary ,leader_nm )

在cmd執行? cd 到對應目錄執行 ,執行完后可以查看對應位置log的內容

sqlldr userid=system/voapd@orcl control=control1.ctl log=11.log

在cmd 執行? sqlldr? ? ?可以查看sqlldr 的幫助

useridORACLE用戶名/口令
control控制文件名
log日志文件名
bad錯誤文件名
data數據文件名
discard廢棄文件名
discardmax允許廢棄的文件的數目(全部默認)
skip要跳過的邏輯記錄的數目(默認0)
load要加載的邏輯記錄的數目(全部默認)
errors允許的錯誤的數目(默認50)
rows常規路徑綁定數組中或直接路徑保存數據間的行數(默認:常規路徑64,所有直接路徑)
bindsize常規路徑綁定數組的大小(以字節計)(默認256000)
silent運行過程中隱藏消息(標題,反饋,錯誤,廢棄,分區)
direct使用直接路徑(默認FALSE)
parfile參數文件:包含參數說明的文件的名稱
parallel執行并行加載(默認FALSE)
file要從以下對象中分配區的文件
skip_unusable_indexes不允許/允許使用無用的索引或索引分區(默認FALSE)
skip_index_maintenance沒有維護索引,將受到影響的索引標記為無用(默認FALSE)
commit_discontinued提交加載中斷時已加載的行(默認FALSE)
readsize讀取緩沖區的大小(默認1048576)
external_table使用外部表進行加載;NOT_USED,GENERATE_ONLY,EXECUTE(默認NOT_USED)
columnarrayrows直接路徑列數組的行數(默認5000)
streamsize直接路徑流緩沖區的大小(以字節計)(默認256000)
multithreading在直接路徑中使用多線程
resumable啟用或禁用當前的可恢復會話(默認FALSE)
resumable_name有助于標識可恢復語句的文本字符串
resumable_timeoutRESUMABLE的等待時間(以秒計)(默認7200)
date_cache日期轉換高速緩存的大小(以條目計)(默認1000)
no_index_errors出現任何索引錯誤時中止加載(默認FALSE)
PLEASENOTE命令行參數可以由位置或關鍵字指定。前者的例子是'sqlldrscott/tigerfoo';后一種情況的一個示例是'sqlldrcontrol=foouserid=scott/tiger'。位置指定參數的時間必須早于但不可遲于由關鍵字指定的參數。例如,允許'sqlldrscott/tigercontrol=foologfile=log',但是不允許'sqlldrscott/tigercontrol=foolog',即使參數'log'的位置正確。
??

?

------------------------------------------

二、導出spool

在SQLplus 或在SQl命令行 輸入

spool c:\test\spool.txtselect st.employer_nm||'|'||st.salary||'|'||st.department from salary_tbl st where LEADER_NM='雇傭者4'; spool off

就可以導出了

此時ctl 文件該怎么寫才能正確導入呢 ?

其中 options skip 是選擇跳過的行數? ,? 順便使用支持中文導入的字符編碼

options(skip=3) load data CHARACTERSET ZHS16GBK infile 'spool.txt' into table SALARY_TBL truncate fields terminated by '|'(employer_nm ,salary ,department )

?

二、外部表

? 外部表的數據不裝入數據庫中,數據庫中只存儲外部表的定義。實際數據位于操作系統中的平面文件中。外部表只讀,可以通過select 進行查詢。外部表可以由數據泵引擎生成的外部表。也可以通過文本文件生成的外部表

create table salary_tbl_external(employer_nm ,department ,salary ,leader_nm )organization external -----指明外部表 (type oracle_datapump --利用數據泵來創建default directory MY_DIR --D:\DIRTEST1location ('sal1.dmp','sal2.dmp') ) parallelas select salary_tbl.employer_nm,salary_tbl.department,salary_tbl.salary,salary_tbl.leader_nm from salary_tbl

在MY_DIR 文件中有 SAL1.dmp 和SAL2.dmp文件。現在有了dmp文件可以通過外部表來創建外部表

create table salary_tbl_external2(employer_nm varchar2(20) ,department varchar2(20),salary number,leader_nm varchar2(20) ) organization external(type oracle_datapumpdefault directory MY_DIR --D:\DIRTEST1location ('sal1.dmp','sal2.dmp') )

利用文本文件來創建外部表? 現有txt文件

create directory C_test as 'C:\test'; --使用oracle_loader創建外部表,數據文件中每一行為數據行,字段按照 ‘|'劃分 create table salary_tbl_external3(employer_nm varchar2(20) ,department varchar2(20),salary number,leader_nm varchar2(20) ) organization external(type oracle_loaderdefault directory C_test access parameters(records delimited by newline fields terminated by '|' )location ('data1.txt') )select * from salary_tbl_external3

就可以查詢了。

?注意:?如果在access parameters 中? 注釋一些沒有用的代碼,系統認為這是不符合規則的語句,會產生錯誤ORA-29913

?

總結

以上是生活随笔為你收集整理的Oracle 原理:数据装载 ,SQLldr ,外部表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。