1.目錄規劃:
oracle@mdsp140:~/convertdata> pwd
/opt/oracle/convertdata //用於存放源數據、目標數據、轉換腳本、導庫腳本;
oracle@mdsp140:~/convertdata> ll
total 8
-rwxrwxrwx 1 oracle oinstall 397 2011-09-29 10:58 converter.sh //轉換腳本,用於掃描源數據,提取符合規則的數據;
drwxrwxrwx 2 oracle oinstall 80 2011-09-29 10:49 source //源數據目錄,用以存放待處理的數據;
-rwxrwxrwx 1 oracle oinstall 139 2011-09-29 10:47 sqlldr.ctl //導庫腳本,該腳本由oracle自帶的sqlldr工具,將ctl文件,導入庫中;
drwxrwxrwx 2 oracle oinstall 80 2011-09-29 11:18 target //存放經過轉換後的數據,作爲導庫腳本的數據源;
2.源數據設定:
oracle@mdsp140:~/convertdata/source> pwd
/opt/oracle/convertdata/source
oracle@mdsp140:~/convertdata/source> ls
data_sub.txt
oracle@mdsp140:~/convertdata/source> tail data_sub.txt
2,610010200845081,22365000081,0,-1,-1,NONGPRS,0,0,0,0,0,0,0,NO,NO,0,0,NOBPOS,BOTH //一行源數據
3.轉換腳本:
oracle@mdsp140:~/convertdata> cat converter.sh
#!/bin/ksh
awk -F \, '{
if (match($1, "[0-9]+"))
{
field1 = $1;
field2 = $2;
field3 = $3;
printf("%s|%s|%s\n", field1, field2, field3);
}}' ./source/* >> ./target/result.dat
//如果在windows下編寫該文件,上傳後,出現"^M"提示時,可用以下指領,進行文件過濾;
oracle@mdsp140:~/convertdata>cat -v converter.sh | tr -d "^M" > converter.sh
4.轉換後生成的數據文件
oracle@mdsp140:~/convertdata/target> ls
result.dat
oracle@mdsp140:~/convertdata/target> tail result.dat
2|610010200845081|22365000081
5.導庫腳本 sqlldr.ctl
load data
infile "./target/result.dat"
append into table import_temp
fields terminated by "|"
trailing nullcols(HLR_INDEX,IMSI,MSISDN)
6. 創建數據庫用戶MDSP
7.創建導入的表:
create table import_temp (
HLR_INDEX varchar2(50),
IMSI varchar2(50),
MSISDN varchar2(50))
8.執行導庫指令,導庫;
//該步驟,應在與ctl文件同級目錄,執行,且當前系統用戶爲oracle
sqlldr userid=mdsp/mdsp control=./sqlldr.ctl
也可用這種格式:
sqlplus mdsp/mdsp@本地命名 control=./sqlldr.ctl //本地命名服務,需要手動進行配置;