【匯入匯出】sqlldr 匯入案例
今天使用sqlldr 將600w單欄位的資料匯入到一個表當中,但是由於未指定分隔符導致匯入資料失敗。重現一下匯入過程。
load.ctl
load data
infile 'd:\rid_600w.txt'
insert
into table tmp_user (tuid)
C:\Users\aaaa>sqlldr userid=yang/yang control=d:\load.ctl direct=true
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:12:02 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
載入完成 - 邏輯記錄計數 6070664。
==========sqlplus記錄
C:\Users\aaaa>sqlplus yang/yang
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 3月 9 19:42:28 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
yang@ORACL> create table tmp_user(tuid varchar2(100));
表已建立。
yang@ORACL> select tuid from tmp_user where rownum <12;
TUID
------------------------
c
c
c
c
c
c
c
c
c
c
c
已選擇11行。
===================匯入的日誌如下:注意 長度的值為1--失敗的關鍵。
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:12:02 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案: d:\load.ctl
資料檔案: d:\rid_600w.txt
錯誤檔案: d:\rid_600w.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繼續: 未作指定
所用路徑: 直接
表 TMP_USER,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
TUID FIRST 1 CHARACTER
表 TMP_USER:
6070664 行 載入成功。
由於資料錯誤, 0 行 沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行 沒有載入。
在直接路徑中沒有使用繫結陣列大小。
列陣列 行數: 5000
流緩衝區位元組數: 256000
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數: 6070664
拒絕的邏輯記錄總數: 0
廢棄的邏輯記錄總數: 0
由 SQL*Loader 主執行緒載入的流緩衝區總數: 1259
由 SQL*Loader 載入執行緒載入的流緩衝區總數: 0
從 星期三 3月 09 20:12:02 2011 開始執行
在 星期三 3月 09 20:12:09 2011 處執行結束
經過時間為: 00: 00: 06.30
CPU 時間為: 00: 00: 01.98
錯誤的原因是因為沒有指出分割符。FIELDS TERMINATED BY ' '/FIELDS TERMINATED BY 'chr(10)' 都可以。
==========修改後的load 控制檔案====
load.ctl
load data
infile 'd:\rid_600w.txt'
insert
into table tmp_user FIELDS TERMINATED BY 'chr(10)' (tuid)
fields teriminated by 'chr(10)' 表示一換行符為分隔符
C:\Users\aaaa>sqlldr userid=yang/yang control=d:\load.ctl direct=true log=d:\sqlldr.log
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:21:07 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
載入完成 - 邏輯記錄計數 6070664。
yang@ORACL> truncate table tmp_user;
表被截斷。
yang@ORACL> drop table tmp_user;
表已刪除。
yang@ORACL> create table tmp_user(tuid varchar2(50));
表已建立。
yang@ORACL> select tuid from tmp_user where rownum <12;
TUID
--------------------------
cindy74583
himself49441
paragraph58429
wander80900
soluble32354
situation72689
gross51644
lee54299
dismiss32151
eyesight1968
advance7776
已選擇11行。
yang@ORACL>
===================匯入的日誌如下:注意 長度的值為*
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:21:07 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案: d:\load.ctl
資料檔案: d:\rid_600w.txt
錯誤檔案: d:\rid_600w.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繼續: 未作指定
所用路徑: 直接
表 TMP_USER,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
TUID FIRST * CHARACTER
終止符字串: 'chr(10)'
表 TMP_USER:
6070664 行 載入成功。
由於資料錯誤, 0 行 沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行 沒有載入。
在直接路徑中沒有使用繫結陣列大小。
列陣列 行數: 5000
流緩衝區位元組數: 256000
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數: 6070664
拒絕的邏輯記錄總數: 0
廢棄的邏輯記錄總數: 0
由 SQL*Loader 主執行緒載入的流緩衝區總數: 1259
由 SQL*Loader 載入執行緒載入的流緩衝區總數: 0
從 星期三 3月 09 20:21:07 2011 開始執行
在 星期三 3月 09 20:21:17 2011 處執行結束
經過時間為: 00: 00: 09.89
CPU 時間為: 00: 00: 05.82
load.ctl
load data
infile 'd:\rid_600w.txt'
insert
into table tmp_user (tuid)
C:\Users\aaaa>sqlldr userid=yang/yang control=d:\load.ctl direct=true
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:12:02 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
載入完成 - 邏輯記錄計數 6070664。
==========sqlplus記錄
C:\Users\aaaa>sqlplus yang/yang
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 3月 9 19:42:28 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
yang@ORACL> create table tmp_user(tuid varchar2(100));
表已建立。
yang@ORACL> select tuid from tmp_user where rownum <12;
TUID
------------------------
c
c
c
c
c
c
c
c
c
c
c
已選擇11行。
===================匯入的日誌如下:注意 長度的值為1--失敗的關鍵。
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:12:02 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案: d:\load.ctl
資料檔案: d:\rid_600w.txt
錯誤檔案: d:\rid_600w.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繼續: 未作指定
所用路徑: 直接
表 TMP_USER,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
TUID FIRST 1 CHARACTER
表 TMP_USER:
6070664 行 載入成功。
由於資料錯誤, 0 行 沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行 沒有載入。
在直接路徑中沒有使用繫結陣列大小。
列陣列 行數: 5000
流緩衝區位元組數: 256000
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數: 6070664
拒絕的邏輯記錄總數: 0
廢棄的邏輯記錄總數: 0
由 SQL*Loader 主執行緒載入的流緩衝區總數: 1259
由 SQL*Loader 載入執行緒載入的流緩衝區總數: 0
從 星期三 3月 09 20:12:02 2011 開始執行
在 星期三 3月 09 20:12:09 2011 處執行結束
經過時間為: 00: 00: 06.30
CPU 時間為: 00: 00: 01.98
錯誤的原因是因為沒有指出分割符。FIELDS TERMINATED BY ' '/FIELDS TERMINATED BY 'chr(10)' 都可以。
==========修改後的load 控制檔案====
load.ctl
load data
infile 'd:\rid_600w.txt'
insert
into table tmp_user FIELDS TERMINATED BY 'chr(10)' (tuid)
fields teriminated by 'chr(10)' 表示一換行符為分隔符
C:\Users\aaaa>sqlldr userid=yang/yang control=d:\load.ctl direct=true log=d:\sqlldr.log
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:21:07 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
載入完成 - 邏輯記錄計數 6070664。
yang@ORACL> truncate table tmp_user;
表被截斷。
yang@ORACL> drop table tmp_user;
表已刪除。
yang@ORACL> create table tmp_user(tuid varchar2(50));
表已建立。
yang@ORACL> select tuid from tmp_user where rownum <12;
TUID
--------------------------
cindy74583
himself49441
paragraph58429
wander80900
soluble32354
situation72689
gross51644
lee54299
dismiss32151
eyesight1968
advance7776
已選擇11行。
yang@ORACL>
===================匯入的日誌如下:注意 長度的值為*
SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 3月 9 20:21:07 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案: d:\load.ctl
資料檔案: d:\rid_600w.txt
錯誤檔案: d:\rid_600w.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繼續: 未作指定
所用路徑: 直接
表 TMP_USER,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
TUID FIRST * CHARACTER
終止符字串: 'chr(10)'
表 TMP_USER:
6070664 行 載入成功。
由於資料錯誤, 0 行 沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行 沒有載入。
在直接路徑中沒有使用繫結陣列大小。
列陣列 行數: 5000
流緩衝區位元組數: 256000
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數: 6070664
拒絕的邏輯記錄總數: 0
廢棄的邏輯記錄總數: 0
由 SQL*Loader 主執行緒載入的流緩衝區總數: 1259
由 SQL*Loader 載入執行緒載入的流緩衝區總數: 0
從 星期三 3月 09 20:21:07 2011 開始執行
在 星期三 3月 09 20:21:17 2011 處執行結束
經過時間為: 00: 00: 09.89
CPU 時間為: 00: 00: 05.82
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-688865/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlldr批量匯入匯出資料測試SQL
- sqlldr批次匯入匯出資料測試SQL
- 【匯入匯出】sqlldr 匯入含有內嵌換行符的資料SQL
- oracle sqlldr匯入OracleSQL
- 【匯出匯入】匯出匯入 大物件物件
- 資料匯入SQLLDRSQL
- 【匯出匯入】% 在匯入匯出中的應用。
- Activity 流程模型匯入匯出-activity流程模型匯入匯出模型
- Mysql匯入&匯出MySql
- Mysql匯入匯出MySql
- doris匯入匯出
- esayExcel匯入匯出Excel
- 【SQL*Loader】sqlldr匯入SQL
- sqlldr匯入日期函式SQL函式
- 【匯入匯出】Oracle 常用匯入匯出工具集錦Oracle
- vue excel匯入匯出VueExcel
- navlicat 匯入匯出SQLSQL
- mysql 命令匯入匯出MySql
- BCP匯入匯出MsSqlSQL
- mysql匯入匯出慢MySql
- mysql 匯入、匯出命令MySql
- Oracle增量匯入匯出Oracle
- Oracle 的資料匯入匯出及 Sql Loader (sqlldr) 的用法OracleSQL
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- 【匯入匯出】執行匯入,匯出時如何以as sysdba 身份連線。
- sqlldr 匯入資料範例SQL
- Angular Excel 匯入與匯出AngularExcel
- 資料泵匯出匯入
- Oracle 資料匯入匯出Oracle
- mysql資料匯入匯出MySql
- mysql資料匯出匯入MySql
- db2匯入匯出DB2
- oracle排除表匯入匯出Oracle
- .net6 匯入匯出
- Oracle資料匯入匯出Oracle
- 【docker】docker映象匯出匯入Docker
- 原生PHP網頁匯出和匯入excel檔案例項PHP網頁Excel
- MySQL入門--匯出和匯入資料MySql