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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時間:2025/4/16 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、導(dǎo)入 SQLldr

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

LOAD DATA

infile 'e:\aa.csv' ## 源文件路徑,路徑不要包括中文

into table xx_temp ## 要導(dǎo)入的表

(

id terminated by whitespace  ## id 為列名,whitespace 表示列之間使用空格來區(qū)分,如果是其他的 ‘|’ 方式則使用 terminated by '|' 逗號則用逗號.以此類推

)

## 換行 也是自動終止字段讀的標(biāo)識

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

insert: 插入數(shù)據(jù),要求表為空

append:追加數(shù)據(jù),在原來表的基礎(chǔ)上再插入數(shù)據(jù)

replace :刪除原表數(shù)據(jù),再插入

truncate:刪除原表數(shù)據(jù),再插入,比replace 更高效

例如有這么張表

create table salary_tbl(

employer_nm varchar(20) ,

department varchar(20) not null,

salary number not null,

leader_nm varchar(20)

)

新建一個.txt文件用于存數(shù)據(jù),可以自定義分隔符來區(qū)分字段

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

或者這樣寫更簡便

load data

infile 'data1.txt'

into table SALARY_TBL append

fields terminated by '|'(

employer_nm ,

department ,

salary ,

leader_nm

)

在cmd執(zhí)行? cd 到對應(yīng)目錄執(zhí)行 ,執(zhí)行完后可以查看對應(yīng)位置log的內(nèi)容

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

在cmd 執(zhí)行? sqlldr? ? ?可以查看sqlldr 的幫助

userid

ORACLE用戶名/口令

control

控制文件名

log

日志文件名

bad

錯誤文件名

data

數(shù)據(jù)文件名

discard

廢棄文件名

discardmax

允許廢棄的文件的數(shù)目(全部默認(rèn))

skip

要跳過的邏輯記錄的數(shù)目(默認(rèn)0)

load

要加載的邏輯記錄的數(shù)目(全部默認(rèn))

errors

允許的錯誤的數(shù)目(默認(rèn)50)

rows

常規(guī)路徑綁定數(shù)組中或直接路徑保存數(shù)據(jù)間的行數(shù)(默認(rèn):常規(guī)路徑64,所有直接路徑)

bindsize

常規(guī)路徑綁定數(shù)組的大小(以字節(jié)計)(默認(rèn)256000)

silent

運(yùn)行過程中隱藏消息(標(biāo)題,反饋,錯誤,廢棄,分區(qū))

direct

使用直接路徑(默認(rèn)FALSE)

parfile

參數(shù)文件:包含參數(shù)說明的文件的名稱

parallel

執(zhí)行并行加載(默認(rèn)FALSE)

file

要從以下對象中分配區(qū)的文件

skip_unusable_indexes

不允許/允許使用無用的索引或索引分區(qū)(默認(rèn)FALSE)

skip_index_maintenance

沒有維護(hù)索引,將受到影響的索引標(biāo)記為無用(默認(rèn)FALSE)

commit_discontinued

提交加載中斷時已加載的行(默認(rèn)FALSE)

readsize

讀取緩沖區(qū)的大小(默認(rèn)1048576)

external_table

使用外部表進(jìn)行加載;NOT_USED,GENERATE_ONLY,EXECUTE(默認(rèn)NOT_USED)

columnarrayrows

直接路徑列數(shù)組的行數(shù)(默認(rèn)5000)

streamsize

直接路徑流緩沖區(qū)的大小(以字節(jié)計)(默認(rèn)256000)

multithreading

在直接路徑中使用多線程

resumable

啟用或禁用當(dāng)前的可恢復(fù)會話(默認(rèn)FALSE)

resumable_name

有助于標(biāo)識可恢復(fù)語句的文本字符串

resumable_timeout

RESUMABLE的等待時間(以秒計)(默認(rèn)7200)

date_cache

日期轉(zhuǎn)換高速緩存的大小(以條目計)(默認(rèn)1000)

no_index_errors

出現(xiàn)任何索引錯誤時中止加載(默認(rèn)FALSE)

PLEASENOTE

命令行參數(shù)可以由位置或關(guān)鍵字指定。前者的例子是'sqlldrscott/tigerfoo';后一種情況的一個示例是'sqlldrcontrol=foouserid=scott/tiger'。位置指定參數(shù)的時間必須早于但不可遲于由關(guān)鍵字指定的參數(shù)。例如,允許'sqlldrscott/tigercontrol=foologfile=log',但是不允許'sqlldrscott/tigercontrol=foolog',即使參數(shù)'log'的位置正確。

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

二、導(dǎo)出spool

在SQLplus 或在SQl命令行 輸入

spool c:\test\spool.txt

select st.employer_nm||'|'||st.salary||'|'||st.department from salary_tbl st where LEADER_NM='雇傭者4';

spool off

就可以導(dǎo)出了

此時ctl 文件該怎么寫才能正確導(dǎo)入呢 ?

其中 options skip 是選擇跳過的行數(shù)? ,? 順便使用支持中文導(dǎo)入的字符編碼

options(skip=3)

load data

CHARACTERSET ZHS16GBK

infile 'spool.txt'

into table SALARY_TBL truncate

fields terminated by '|'(

employer_nm ,

salary ,

department

)

二、外部表

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

create table salary_tbl_external(

employer_nm ,

department ,

salary ,

leader_nm

)

organization external -----指明外部表

(

type oracle_datapump --利用數(shù)據(jù)泵來創(chuàng)建

default directory MY_DIR --D:\DIRTEST1

location ('sal1.dmp','sal2.dmp')

) parallel

as

select salary_tbl.employer_nm,

salary_tbl.department,

salary_tbl.salary,

salary_tbl.leader_nm from salary_tbl

在MY_DIR 文件中有 SAL1.dmp 和SAL2.dmp文件。現(xiàn)在有了dmp文件可以通過外部表來創(chuàng)建外部表

create table salary_tbl_external2(

employer_nm varchar2(20) ,

department varchar2(20),

salary number,

leader_nm varchar2(20)

) organization external(

type oracle_datapump

default directory MY_DIR --D:\DIRTEST1

location ('sal1.dmp','sal2.dmp')

)

利用文本文件來創(chuàng)建外部表? 現(xiàn)有txt文件

create directory C_test as 'C:\test';

--使用oracle_loader創(chuàng)建外部表,數(shù)據(jù)文件中每一行為數(shù)據(jù)行,字段按照 ‘|'劃分

create table salary_tbl_external3(

employer_nm varchar2(20) ,

department varchar2(20),

salary number,

leader_nm varchar2(20)

) organization external(

type oracle_loader

default directory C_test

access parameters(

records delimited by newline

fields terminated by '|'

)

location ('data1.txt')

)

select * from salary_tbl_external3

就可以查詢了。

注意:?如果在access parameters 中? 注釋一些沒有用的代碼,系統(tǒng)認(rèn)為這是不符合規(guī)則的語句,會產(chǎn)生錯誤ORA-29913

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。