ctl 的寫法 SQLLDR的使用

2021-10-25 17:41:48 字數 4576 閱讀 9728

dos 環境下使用sql*loader命令 載入

使用其它資料庫的資料轉移工具

oracle 企業管理器中的資料載入功能

具體的技術實現

一、dos 環境下載入

1、首先,伺服器端的偵聽服務必須已經開啟。

測試方法:dos 下輸入

2、然後使用 oracle 的 sqlldr 命令進行資料的匯入

前期條件

1) oracle 資料庫端必須已經建好了需要匯入的資料表的結構

2) 乙個資料原始檔 下面例子中為製表符分隔的文字檔案 model.txt ,為excel 表中匯出的

3) 手工編輯乙個***.ctl 的控制檔案

4) 命令列載入資料

如下例項:

以下檔案預設放到c:\ 下,如果不是,就需要指明全路徑

1. 命令控制檔案 input.ctl 內容

命令說明

load data

1、控制檔案標識

infile 'model.txt'

2、要輸入的資料檔案名為test.txt

3、向表test中追加記錄

fields terminated by x'09'

4、指定分隔符,字段終止於x'09',是乙個製表符(tab)

(編號,名稱,大小)

5、定義列對應表中順序

控制檔案中指定插入資料的方式關鍵字

insert,為預設方式,在資料裝載開始時要求表為空

replace,刪除舊記錄,替換成新裝載的記錄

truncate,同上

在 dos 視窗下使用 sql*loader 命令實現資料的匯入

c:\>sqlldr userid=system/manager@ servicename control=input.ctl

預設日誌檔名為:input.log

預設壞記錄檔案為:input.bad

二、使用其它資料庫轉移工具

以下以sql server 匯入匯出嚮導為例

1、在資料的匯入匯出嚮導中設定資料來源伺服器,例項中選擇資料來源選擇sql server

2、然後指定要匯入的oracle 資料來源

3、需要配置oracle 的屬性資訊

需要注意的是,登入資料庫的使用者資訊即為資料匯入之後的方案名,即匯入之後的sql server 中的表在oracle 中標誌名為 username.表名

以下按照提示即可,可以完全匯入sql server 中的資料表和檢視,也可以使用查詢語句返回你要選擇的列或者行。

三、oracle 企業管理器中的資料載入功能

登入oracle 的控制台介面,針對單獨的資料表可以使用資料載入工具

中間需要指定控制檔案等,同dos 載入一致,不再重複

向oracle中匯入文字資料時使用的控制檔案格式

命令說明

load data

1、控制檔案標識

infile 'testl.txt'

2、要輸入的資料檔案名為test.txt,此時是要匯入的資料檔案同控制檔案在同一路徑下,如果不在同一路徑下則需要寫完整路徑名

3、向表test中追加記錄

fields terminated by x'09'

4、指定分隔符,字段終止於x'09',是乙個製表符(tab),如果用逗號分割就將x'09'替換為','

(編號,名稱,大小)

5、定義列對應表中順序

控制檔案中指定插入資料的方式關鍵字

insert,為預設方式,在資料裝載開始時要求表為空

replace,刪除舊記錄,替換成新裝載的記錄

truncate,同上

控制檔案的示例:

load data

infile 'test.txt'

fields terminated by x'09'

(test,test1,test2)

對有時間型別的資料匯入的示例控制檔案:

load data

infile 'h:\tb_fact_phs_ticket_day.txt'

fields terminated by x'09'

(time_id

,region_id

,cust_type_id

,prod_type_id

,acct_item_type_id

,acct_item_type_cd

,exchange97_cd

,latn_cd

,call_duration

,access_in_duration

,income

,in_date  date "yyyy-mm-dd"

檔案匯入命令                    c:\>sqlldr userid=test/test@test control=test.ctl(此時控制檔案test.ctl存在c:\路徑下)

在命令控制符下進入oracle        c:\>sqlplus username/password@servicename

oracle匯入txt資料檔案2023年07月30日 星期三 17:21把txt檔案格式的資料檔案匯入oracle的方法是利用sqlloader工具。

第一步:把文字格式的資料檔案放入c盤。如,test.txt

load data             --1、控制檔案標識

infile   'test.txt'       --2、要輸入的資料檔案名為test.txt

fields terminated by x'09' --4、字段終止於x'09',是乙個製表符

(id,username,password,sj)     -----定義列對應順序

a、insert,為預設方式,在資料裝載開始時要求表為空

c、replace,刪除舊記錄,替換成新裝載的記錄

d、truncate,同上

第三步:在命令提示符下輸入命令。

c:\>sqlldr userid=username/password

或者 c:\>sqlldr userid=system/manager@ servicename control=input.ctl

一些經常出現的問題:

1。關於日期格式的問題:

ctl基本寫法諸如:

load data

infile 'c:/tp_loancontractsum.txt'

insert into table tp_loancontractsum

fields terminated by '|!'

column01,

column02,

column03,

column04 "to_date(:column04,'''yyyy-mm-dd hh24:mi:ss''')",

column05 "to_date(:column05,'''yyyy-mm-dd hh24:mi:ss''')",

column06,

column07,

column08,

column09,

column10,

column11,

column12 "to_date(:column12,'''yyyy-mm-dd hh24:mi:ss''')",

column13

2。關於長字串問題,ctl預設情況下是256位(或者256位左右),所以長字串時會在log裡報錯,提示所輸入的值超過最大長度,解決辦法,在ctl檔案裡再指定大小,注意個情況,不能寫varchar只能寫char,否則報錯,諸如:

load data

infile 'c:/tp_pledgecontractinfo.txt'

insert into table tp_pledgecontractinfo

fields terminated by '|!'

column01,

column02,

column03,

column04,

column05,

column06,

column07 "to_date(:column07,'''yyyy-mm-dd hh24:mi:ss''')",

column08,

column09,

column10 "to_date(:column10,'''yyyy-mm-dd hh24:mi:ss''')",

column11,

column12,

column13,

column14,

column15 "to_date(:column15,'''yyyy-mm-dd hh24:mi:ss''')",

column16,

column17,

column18 "to_date(:column18,'''yyyy-mm-dd hh24:mi:ss''')",

column19,

column20,

column21,

column22,

column23,

column24,

column25 "to_date(:column25,'''yyyy-mm-dd hh24:mi:ss''')",

column26 char(500),

column27,

column28

簡述sqlldr的使用

我的專案有一張表,始終是手動匯入資料。我接手之前的同事總是喜歡用pl sql developer,但是我覺得還是黑框框看著有技術含量。這裡順便就寫一下有關sqlldr的簡單用法。有關sqlldr資料比較全面的應該就是幫助了,打出來看一下。sql loader release 11.2.0.1.0 p...

sqlldr命令的使用

sqlldr是在cmd下執行的oracle命令,作用是將資料檔案匯入到oracle資料庫中.命令格式 sqlldr username password sid control 檔案路徑 xx.ctl xx.ctl內容 load data infile d ldr diaodubu2.csv 要匯入到...

SQLLDR的使用方法

jerry,26,200201012359 jerry,26,200201012359 控制檔案中infile選項跟sqlldr命令列中data選項含義相同,如使用infile 則表明資料在本控制檔案以begin data開頭的區域內。這樣命令變成 sqlldr dbuser dbpwd sid c...