Ⅰ sqlloader 的CTL 文件里 filter怎麼寫
sqlldr userid=lgone/tiger control=a.ctl
LOAD DATA
INFILE 't.dat' // 要導入的文件
// INFILE 'tt.date' // 導入多個文件
// INFILE * // 要導入的內容就在control文件里 下面的BEGINDATA後面就是導入的內容
INTO TABLE table_name // 指定裝入的表
BADFILE 'c:\bad.txt' // 指定壞文件地址
************* 以下是4種裝入表的方式
APPEND // 原先的表有數據 就加在後面
// INSERT // 裝載空表 如果原先的表有數據 sqlloader會停止 默認值
// REPLACE // 原先的表有數據 原先的數據會全部刪除
// TRUNCATE // 指定的內容和replace的相同 會用truncate語句刪除現存數據
************* 指定的TERMINATED可以在表的開頭 也可在表的內部欄位部分
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
// 裝載這種數據: 10,lg,"""lg""","lg,lg"
// 在表中結果: 10 lg "lg" lg,lg
// TERMINATED BY X '09' // 以十六進制格式 '09' 表示的
// TERMINATED BY WRITESPACE // 裝載這種數據: 10 lg lg
TRAILING NULLCOLS ************* 表的欄位沒有對應的值時允許為空
************* 下面是表的欄位
(
col_1 , col_2 ,col_filler FILLER // FILLER 關鍵字 此列的數值不會被裝載
// 如: lg,lg,not 結果 lg lg
)
// 當沒聲明FIELDS TERMINATED BY ',' 時
// (
// col_1 [interger external] TERMINATED BY ',' ,
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
// )
// 當沒聲明FIELDS TERMINATED BY ','用位置告訴欄位裝載數據
// (
// col_1 position(1:2),
// col_2 position(3:10),
// col_3 position(*:16), // 這個欄位的開始位置在前一欄位的結束位置
// col_4 position(1:16),
// col_5 position(3:10) char(8) // 指定欄位的類型
// )
BEGINDATA // 對應開始的 INFILE * 要導入的內容就在control文件里
10,Sql,what
20,lg,show
=====================================================================================
//////////// 注意begindata後的數值前面不能有空格
1 ***** 普通裝載
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10,Sales,"""USA"""
20,Accounting,"Virginia,USA"
30,Consulting,Virginia
40,Finance,Virginia
50,"Finance","",Virginia // loc 列將為空
60,"Finance",,Virginia // loc 列將為空
2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情況
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY WHITESPACE
-- FIELDS TERMINATED BY x'09'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10 Sales Virginia
3 ***** 指定不裝載那一列
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
( DEPTNO,
FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 將不會被裝載
DNAME,
LOC
)
BEGINDATA
20,Something Not To Be Loaded,Accounting,"Virginia,USA"
4 ***** position的列子
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
( DEPTNO position(1:2),
DNAME position(*:16), // 這個欄位的開始位置在前一欄位的結束位置
LOC position(*:29),
ENTIRE_LINE position(1:29)
)
BEGINDATA
10Accounting Virginia,USA
5 ***** 使用函數 日期的一種表達 TRAILING NULLCOLS的使用
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS // 其實下面的ENTIRE_LINE在BEGINDATA後面的數據中是沒有直接對應
// 的列的值的 如果第一行改為 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了
(DEPTNO,
DNAME "upper(:dname)", // 使用函數
LOC "upper(:loc)",
LAST_UPDATED date 'dd/mm/yyyy', // 日期的一種表達方式 還有'dd-mon-yyyy' 等
ENTIRE_LINE ":deptno:dname:loc:last_updated"
)
BEGINDATA
10,Sales,Virginia,1/5/2000
20,Accounting,Virginia,21/6/1999
30,Consulting,Virginia,5/1/2000
40,Finance,Virginia,15/3/2001
6 ***** 使用自定義的函數 // 解決的時間問題
create or replace
function my_to_date( p_string in varchar2 ) return date
as
type fmtArray is table of varchar2(25);
看看參考下!
Ⅱ 求教oracle 導入excel里的數據方法
oracle導入excel數據方法:
1、將excel文件轉成csv文件。一般點另存為,格式選擇csv格式即可
loaddata
infile'result.csv'--這個是csv的文件名
intotableresultxt--這是在資料庫中新建的表名
(resultidcharterminatedby',',--以下分別為欄位名及數據類型,terminatedby',',則是以逗號分隔
websitecharterminatedby',',
ipportcharterminatedby',',
)--最後以空白結尾
4、通過命令提示符進行導入:
cmd進入命令提示符後,進入ctl文件路徑,執行以下內容:
sqlldr userid=用戶名/密碼 control=load.ctl log=load.out
Ⅲ 怎樣將Excel內准備的數據用PLSQL Developer導入到Oracle表
可以試試~
方法一:最省時的方法,需要藉助plsql dev工具。
a.復制整個工作簿中的數據到某個表中。
點擊excel工作區左上角,全部選中數據,ctrl+c 復制整個工作簿中的數據。在plsql dev中,編輯表格表的數據,點擊數據展示區左上角,直接粘貼就可以了(注意excel的第一列應該保持為空,如果不為空可以增加一空列,不然你復制的數據就會少一列的)!如下圖
所示:
容易出現:ora-01400:cannot insert null into
網路思路:解決思路是在導入之前先創建那張表,且將報錯的欄位去掉not null 約束,再導入,導入之後找到那個為null的數據,要麼delete要麼update,再把not null約束加上去,OK。
實際解決方法:重啟plsql,再操作一次-------------------------不一定成功!
b.復制某列的數據。
這個很容易,選中excel某一列的數據,復制,選中oracle某個表的某一列,直接粘貼就可以了。plsql dev和excel中的列可以相互復制。
方法二:最專業的方法,用sql loader。
原文地址:http://daniel-wuz.javaeye.com/blog/198112
1.錄入excel 測試表格,test.xls。
2.另存為.csv格式
3.創建sql*loader控制文件test.ctl,內容如下:
Load data
Infile 'c:/test.csv'
insert Into table test Fields terminated by','(column1,column2,column3,column4,column5)
需要將數據文件拷貝到對應位置
4.到資料庫中建立對應的測試表test
create table test (
column1 Varchar2(10),
column2 Varchar2(10),
column3 Varchar2(10),
column4 Varchar2(10),
column5 Varchar2(10)
)
5.執行導入命令
Sqlldr userid = system/manager control='C:/test.ctl'
導入成功!
附:
Sqlldr的函數關鍵字說明:
Userid --oracle用戶名 userid = username/password
Control --控制文件名稱 control =『e:/insert.ctl』
Log –-日誌文件名稱 log = 『e:/insert.log』
Bad --損壞文件名稱
Data --data file name
Discard --discard file name
Discardmax --number of discards to allow(默認全部)
Skip --導入時跳過的記錄行數(默認0)
Load --導入時導入的記錄行數(默認全部)
Errors --允許錯誤的記錄行數(默認50)
ctl文件內容說明:
Load data
Infile 『e:/test.csv』 --數據源文件名稱
Append|insert|replace --append在表後追加,insert插入空表,replace替代原有內容
Into table test --要導入的資料庫表名稱
[when id = id_memo] --過濾條件
Fields terminated by X』09』 --欄位分隔符
(id,name,telphone) --欄位名稱列表
方法三:最悲劇的方法,創建oracle外部表,為了把excel中的數據導入到數據中而去建立外部表,大題小做了!
將excel文件另存為csv文件a.csv,然後創建一個外部表t,數據指向a.csv。然後根據外部表創建一個普通的表:
create table a asselect * from t ,這樣就可以把最初的excel文件導入到oracle中的表了。
方法四:最古典的方法,拼接sql語句。如果你excel熟的話,這種方法也不錯。
在excel中,把數據拼接成如下sql語句:
insert into empvalues('1','2','3');
insert into empvalues('4','5','6');
insert into empvalues('7','8','9');
Ⅳ UxCTL寄存器的各個位功能詳解
寄存器的具體示例,如UxCTL寄存器,是一個8位控制單元,它在UASRT模塊的運行中起關鍵作用,包括通信協議、模式選擇和校驗位等設置。圖示顯示了寄存器的8個有效控制位:
通用寄存器,如EAX、EBX、ECX和EDX,是計算機中可編程使用的,它們在運算和內存操作中扮演重要角色。EAX用於運算,保護模式下也可作為內存偏移指針;EBX和ECX分別用於內存偏移和計數;EDX在運算中作為EAX的溢出寄存器,且同樣可用於內存偏移。
段寄存器,如ESI、EDI,以及堆棧操作相關的EBP、ESP,用於內存操作的地址指定,而CS、DS、ES、FS、GS和SS則作為選擇器,用於指示數據段、附加段等的不同內存區域。理解這些寄存器的設置和功能對於控制數據流和通信模式至關重要。
寄存器是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,包含的寄存器有累加器(ACC)。