之前寫過一篇 sql*loader 的部落格, 介紹了這個工具是什麼, 怎麼用, 最後說 metalink 裡面的這篇note: 1019523.6 可以自動產生控制檔案. 但是根據我的測試, 這篇note 裡面的指令碼產生的控制檔案是錯的. 這篇部落格給出我修改過的指令碼, 和詳細步驟:
同乙個資料庫, 可以使用下面這種格式:
create
table yu_mmt_01 as
select * from mtl_material_transactions where
1=2;
select * from yu_mmt_01;
insert
into yu_mmt_01 select * from mtl_material_transactions where rownum < 100;
如果不同資料庫之間需要複製資料, 可以先 select 出資料, 然後用 sql developer 生成 insert/loader 語句, 直接在目標資料庫裡面跑這個指令碼.
如果資料量很大, 就需要借助 sql*loader 這個工具了.
首先要確保 source table 和 destination table 兩個表結構是一樣的
create
table yu_mmt_01 as
select * from mtl_material_transactions where
1=2;
copy 下面的**儲存成檔案generate_ctl.sql, 上傳到/var/tmp 目錄下, 用sqlplus @generate_ctl.sql 執行這個指令碼, 可以在這個目錄下獲得 .ctl 控制檔案.
set echo off
set heading off
set verify off
set feedback off
setshow off
set trim off
set pages 0
set concat on
set lines 300
set trimspool on
set trimout on
alter
session
set nls_language='american';
spool mtl_material_transactions.ctl
select
'load data'||chr (10)||
'infile '''||lower (table_name)||'.dat'''||chr (10)||
'into table '||' yu_mmt_01 '||chr (10)||
'fields terminated by '','''||chr (10)||
'optionally enclosed by ''"'' '||chr (10)||
'trailing nullcols'||chr (10)||'('
from all_tables
where table_name = upper ('mtl_material_transactions');
select decode (column_id, 1, ' ', ' , ')||
rpad (column_name, 33, ' ')||
decode (data_type, 'varchar2', 'char nullif ('||column_name||'=blanks)',
'float', 'decimal external nullif('||column_name||'=blanks)',
'number', decode (data_precision, 0, 'integer external nullif ('||column_name||'=blanks)',
decode (data_scale, 0, 'integer external nullif ('||column_name||'=blanks)',
'decimal external nullif ('||column_name||'=blanks)')),
'date', 'timestamp "dd-mon-yy hh.mi.ss.ff9 am" nullif ('||column_name||'=blanks)', null)
from all_tab_columns
where table_name = upper ('mtl_material_transactions')
order
by column_id;
select
')'from sys.dual;
spool off
./
設定 sql developer 資料庫編碼集: 首選項 -> 資料庫 -> nls, 全部設定 american
從source db 裡 select 出需要的資料, 儲存成 .csv 格式,
select * from mtl_material_transactions where rownum < 100;
SqlLoader匯入資料
1 開啟要匯出為oracle的excel,將excel檔案儲存為test.txt檔案 檔案 另存為 控制檔案 input.ctl,內容如下 load data 1 控制檔案標識 infile test.txt 2 要輸入的資料檔案名為.txt,注意路徑 fields terminatedby x 0...
使用SQL LOADER匯入資料
oracle的sql loader是乙個專門用於oracle導資料的工具。不過,好多dba習慣用toad匯入資料,toad這個工具。但是我覺得sql loader也不錯,特別是在批量的時候。對於初學者,我想宣告一點的是,關於那個.ctl檔案。我起初以為.ctl檔案是oracle自己的控制檔案。結果搞...
sqlloader匯出資料和匯入資料
分類 oracle 忙了一天終於把sqlloader匯出資料和匯入資料弄清楚了,累死俺了。這個總結主要分為三個大部分,第一部分 例項,主要分兩步 第二部分 引數小總結 第三部分 完全引數總結 第一部分 第一步 這是我的匯出資料的指令碼call.sql conn scott tiger set ech...