orcale批量导入txt数据

1.创建ctl sql文件  &参数,&1为ctl文件名,&2为插入方 式 此处选择 truncate 为先清空再插入 append为追加

&3为分隔符 没有用到写死的‘,’,&4为表名 ,通过执行下面的bat 将参数带入bat 进行执行语句。

set echo off                                     
set heading off                                  
set verify off                                   
set feedback off                                 
set show off                                     
set trim off                                     
set pages 0                                      
set concat on                                    
set lines 300                                    
set trimspool on                                 
set trimout on                                   
spool &1..ctl                                    
select 'LOAD DATA'||chr (10)|| 'CHARACTERSET UTF8 '||            
     'INFILE '''||'&1'||'.txt'''||
       '&2 into table '||table_name||chr (10)||       
       'FIELDS TERMINATED BY "," '|| chr (10)||
       'TRAILING NULLCOLS'||chr (10)||'('        
from   user_tables                                
where  table_name = upper ('&4');                
select decode (rownum, 1, '   ', ' , ')||
       rpad (column_name, 33, ' ')||
       decode (data_type,
               'VARCHAR2', 'CHAR('||RTRIM(TO_CHAR(DATA_LENGTH+4)) ||')  NULLIF ('||column_name||'=BLANKS)'||' "trim(:'||column_name||')"',
               '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',     'DATE "YYYY-MM-DD"  NULLIF ('||column_name||'=BLANKS)',
               null)
from   
(select * from user_tab_columns
where  table_name = upper ('&4')
order  by column_id ) t;                           
select ')'                                       
from sys.dual;                                   
spool off 
quit
 

2.写脚本 执行 ctl文件

sqlplus test/123456@localhost/orcl @D:\create_control_extend.sql   txt文件名 truncate "," tablename

sqlplus test/123456@localhost/orcl @D:\create_control_extend.sql   txt文件名2 truncate "," tablename2

3.写导入脚本 input.bat

sqlldr userid=test/123456 control=ctl1.ctl log=log1.out discard=discard.txt errors=1000000 

sqlldr userid=test/123456 control=ctl2.ctl log=log2.out discard=discard.txt errors=1000000 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值