sqlldr同時處理兩種分隔符
使用sqlldr裝載資料時碰到如下問題:
所有欄位使用空格分隔,其中有兩個欄位使用雙引號包含(其中可能有空格),資料樣本、域分隔如下:
60.23.202.124 26.120.3.61 - - 1 [09/Oct/2011:09:00:01 +0800] "POST /BocnetClient/PAYSNo&SignDynPayments.do HTTP/1.1" 200 23089 ""
------------- ----------- - - - ---------------------------- ------------------------------------------------------- --- ----- --------------------------------
看起來很複雜,其實透過使用OPTIONALLY ENCLOSED BY就可以輕鬆實現。
另外,由於該欄位較長,需要在控制檔案中說明欄位長度(超過255),否則報錯。
--1,建立臨時表
drop table tmp_webaccess;
create table tmp_webaccess
(
col1 varchar2(20),
col2 varchar2(20),
col3 varchar2(20),
col4 varchar2(20),
col5 varchar2(20),
col6 date,
col8 varchar2(200),
col9 varchar2(100),
col10 varchar2(100),
col11 varchar2(200)
);
--2,建立控制檔案
more webaccess.ctl
LOAD DATA
infile "webaccess.txt"
Append INTO TABLE tmp_webaccess
FIELDS TERMINATED BY ' '
OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(
col1,
col2,
col3,
col4,
col5,
col6 "to_date(replace(:col6,'['),'dd/mm/yyyy:hh24:mi:ss')",
col7 filler,
col8 char(4000),
col9,
col10,
col11 char(4000)
)
--3,輸入資料檔案
more webaccess.txt
60.23.202.124 26.120.3.61 - - 1 [09/Oct/2011:09:00:01 +0800] "POST /BocnetClient/PAYSNo&SignDynPayments.do HTTP/1.1" 200 23089 ""
--4,裝載
sqlldr user/pwd control=webaccess.ctl
--另:sqlldr支援遠端載入資料,甚至支援easyconnect.
easyconnect條件:
(1),安裝Oracle客戶端
(2),客戶端$ORACLE_HOME/network/admin/sqlnet.ora中需要支援EZCONNECT:
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
否則報:
[oracle]$ sqlldr control=fund_inf.ctl
SQL*Loader: Release 10.2.0.1.0 - Production on Sun Apr 29 09:59:08 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL*Loader-704: Internal error: ulconnect: OCIServerAttach [0]
ORA-12154: TNS:could not resolve the connect identifier specified
(3),連線方式:
sqlplus
sqlldr control=fund_inf.ctl
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-709034/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- php 與 nginx 的兩種處理方式PHPNginx
- linux中cp複製時處理軟連結的兩種方式Linux
- 同花色同值牌處理
- MyBatis多對多的兩種處理方式MyBatis
- SpringBoot可以同時處理多少請求?Spring Boot
- C#轉義字元的兩種處理方式C#字元
- 讀取檔案迴圈處理的兩種方法
- 乙太網MAC層處理CRC的兩種方法Mac
- sqlldr標準輸出未處理導致批處理掛起問題SQL
- MySQL 中處理 Null 時要注意兩個陷阱MySqlNull
- 【PostgresSQL】同時更新兩個表SQL
- DBeaver同時執行多條insert into報錯處理
- 不明原因的約束報錯的兩種處理方式
- java日期時間各種變換及處理Java
- windows bat系列9:for處理案例三 單行按指定分隔符分割WindowsBAT
- awk命令如何對兩列加分隔符
- 第十九篇:處理殭屍程式的兩種經典方法
- asp.core 同時相容JWT身份驗證和Cookies 身份驗證兩種模式JWTCookie模式
- 拆分含有多種分隔符的字串字串
- mysql問題處理兩則MySql
- windows連線兩個音響同時播放Windows
- IDEA如何同時執行兩個ModulesIdea
- 生信分析預處理:plink兩種格式識別與轉換
- Python影像處理丨5種影像處理特效Python特效
- oracle 中使用批處理檔案,同時執行,多個.sql檔案。OracleSQL
- 如何在顯示一個友好頁面的同時又進行其他處理?
- PHP 時間處理PHP
- java時間處理Java
- ORACLE 處理時間Oracle
- bash時間處理
- 處理一份內心煎熬的工作有兩種方法——只有一種是正確的
- MySQL 中的兩種臨時表MySql
- RAC時間同步的兩種方式
- 各種報錯處理方法
- 【轉】Mysql兩種儲存引擎的異同【MyISAM和InnoDB】MySql儲存引擎
- Java異常處理的兩種方式以及自定義異常的使用方法Java
- Swift的時區處理Swift
- python 時間處理Python