用Oracle sqlldr匯入文字檔案TXT 總結
最近在處理一批文字資料,規定按照介面說明匯入到ORACLE資料庫中,經過最近的研究,解決了一些問題,覺得我必要總結一下:
常規資料:
----------------------------------------------------
Dos 環境下使用SQl*Loader命令 載入
使用其它資料庫的資料轉移工具
Oracle 企業管理器中的資料載入功能
具體的技術實現
一、Dos 環境下載入
1、首先,伺服器端的偵聽服務必須已經開啟。
測試方法:Dos 下輸入
C:/>sqlplus
2、然後使用 Oracle 的 sqlldr 命令進行資料的匯入
前期條件
1) Oracle 資料庫端必須已經建好了需要匯入的資料表的結構
2) 一個資料來源檔案 下面例子中為製表符分隔的文字檔案 model.txt ,為Excel 表中匯出的
3) 手工編輯一個XXX.CTL 的控制檔案
4) 命令列載入資料
如下例項:
以下檔案預設放到C:/ 下,如果不是,就需要指明全路徑
1. 命令控制檔案 input.ctl 內容
命令
說明
load data
1、控制檔案標識
infile 'model.txt'
2、要輸入的資料檔名為test.txt
append into table system.塔位屬性表
3、向表test中追加記錄
fields terminated by X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB)
(編號,名稱,大小)
5、定義列對應表中順序
控制檔案中指定插入資料的方式關鍵字
insert,為預設方式,在資料裝載開始時要求表為空
append,在表中追加新記錄
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中匯入文字資料時使用的控制檔案格式
無論是使用上一篇中的哪種方式都需要有一個控制檔案,下面是控制檔案(ctl檔案)書寫的基本格式:
命令
說明
load data
1、控制檔案標識
infile 'testl.txt'
2、要輸入的資料檔名為test.txt,此時是要匯入的資料檔案同控制檔案在同一路徑下,如果不在同一路徑下則需要寫完整路徑名
append into table 表名(可以是全名也可以是同義詞)
3、向表test中追加記錄
fields terminated by X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB),如果用逗號分割就將X'09'替換為','
(編號,名稱,大小)
5、定義列對應表中順序
控制檔案中指定插入資料的方式關鍵字
insert,為預設方式,在資料裝載開始時要求表為空
append,在表中追加新記錄
replace,刪除舊記錄,替換成新裝載的記錄
truncate,同上
控制檔案的示例:
load data
infile 'test.txt'
append into table test.test
fields terminated by X'09'
(test,test1,test2)
對有時間型別的資料匯入的示例控制檔案:
load data
infile 'h:/TB_FACT_PHS_TICKET_DAY.txt'
Append into TABLE TB_FACT_PHS_TICKET_DAY
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 control=test.ctl(此時控制檔案test.ctl存在C:/路徑下)
在命令控制符下進入Oracle C:/>sqlplus
oracle匯入txt資料檔案2008年07月30日 星期三 17:21把txt檔案格式的資料檔案匯入oracle的方法是利用sqlloader工具。
第一步:把文字格式的資料檔案放入C盤。如,test.txt
第二步:建立控制檔案append.ctl。(名字可以隨便取,放C盤下)
append.ctl的內容如下:
load data --1、控制檔案標識
infile 'test.txt' --2、要輸入的資料檔名為test.txt
append into table CTXSYS.test --3、向CTXSYS表空間中的表test中追加記錄
fields terminated by X'09' --4、欄位終止於X'09',是一個製表符
(id,username,password,sj) -----定義列對應順序
其中append為資料裝載方式,還有其他選項:
a、insert,為預設方式,在資料裝載開始時要求表為空
b、append,在表中追加新記錄
c、replace,刪除舊記錄,替換成新裝載的記錄
d、truncate,同上
第三步:在命令提示符下輸入命令。
C:/>sqlldr userid=username/password
control=c:/append.ctl 資料庫中用名的使用者名稱和密碼
或者 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
)
------------------------------------------轉載於----->>
http://blog.csdn.net/programpoet/article/details/4516377
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1135648/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLSERVER匯出TXT文字檔案,ORACLE SQL LOADER匯入TXT文字檔案SQLServerOracle
- 文字檔案用sqlldr工具匯入到oracel資料庫中SQL資料庫
- 使用sqlldr匯入文字資料到oracleSQLOracle
- txt檔案匯入oracle方法Oracle
- 使用oracle sqlldr匯入文字資料的例子OracleSQL
- oracle sqlldr匯入OracleSQL
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- Oracle 匯出txt檔案Oracle
- vfp匯入文字檔案
- oracle sqlldr 總結OracleSQL
- sqlserver匯入匯出文字檔案SQLServer
- Oracle使用sqlldr load匯入txt出現中文亂碼OracleSQL
- MATLAB匯入txt和excel檔案技巧彙總:批量匯入、單個匯入MatlabExcel
- 採用sqlldr定時將文字檔案載入進入資料庫SQL資料庫
- Oracle工具之sqlldr的使用--如何將文字檔案或Excel中的資料匯入資料庫OracleSQLExcel資料庫
- [20140426]使用sqlldr匯入.txtSQL
- mysql匯入文字或excel檔案MySqlExcel
- ociuldr sqlldr 文字匯出工具SQL
- 【匯入匯出】sqlldr 匯入案例SQL
- oracle 載入文字檔案Oracle
- oracle匯入dmp檔案Oracle
- oracle sqlldr控制檔案模板OracleSQL
- 把txt文字匯入sqlserver表內SQLServer
- plsql Oracle匯入dmp檔案SQLOracle
- 資料匯入SQLLDRSQL
- Oracle OCP(55):SQLLDR—CTL檔案OracleSQL
- 文字檔案的資料裝載工具sqlldrSQL
- 【SQL*Loader】sqlldr匯入SQL
- sqlldr匯入日期函式SQL函式
- 從SQL Server匯出txt檔案匯入Oralce遇到毫秒問題SQLServer
- 把TXT文字匯入SQLServer常見問題SQLServer
- MySQL匯入匯出檔案檔案MySql
- ORACLE 的載入工具SQLLDR應用OracleSQL
- Oracle 的資料匯入匯出及 Sql Loader (sqlldr) 的用法OracleSQL
- 使用sqlldr載入外部檔案中的資料到Oracle中(轉)SQLOracle
- python如何將資料寫入本地txt文字檔案Python
- MATLAB實戰系列(四)-匯入txt檔案技巧大全Matlab
- sqlldr 匯入資料範例SQL