SQL Loader 從檔案匯入資料庫

2021-06-29 03:50:09 字數 2577 閱讀 8281

之前寫過一篇 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...