MySQL数据导入oracle

步骤:
  1、从mysql导出数据文件
 
select sender,imsi,random_code,date_format(token_create_time,'%Y%m%d%H%i%s'),date_format(last_login_time,'%Y%m%d%H%i%s'),1 as status  
from tb_sms_token where last_login_time is not null 
into  outfile '/home/mysql/TB_GH_WLAN_TOKEN.dat' 
FIELDS   
TERMINATED BY '$'   
ESCAPED BY '\\'   
LINES   
TERMINATED BY '\r\n' 
 
select sender,imsi,random_code,date_format(token_create_time,'%Y%m%d%H%i%s'),date_format(last_login_time,'%Y%m%d%H%i%s'),1 as status
from tb_sms_token where last_login_time is not null
into  outfile '/home/mysql/TB_GH_WLAN_TOKEN.dat'
FIELDS
TERMINATED BY '$'
ESCAPED BY '\\'
LINES
TERMINATED BY '\r\n'
 
各条数据用换行分割,字段之前用$分割
2、如有oracle无法处理字段可以用linux的awk或sed工具进行转换
3、使用oracle的sqlldr命令导入数据文件,控制文件内容如下
 
LOAD DATA   
INFILE "/home/oracle/TB_GH_WLAN_TOKEN.dat" 
APPEND  
INTO TABLE GAME_HALL_TOKEN_TEMP  
FIELDS TERMINATED BY '$'   
(id sequence(max,1),  
 PHONE_NUMBER ,IMSI,TOKEN_VALUE,  
 CREATE_TIME date "yyyyMMddhh24miss",  
 LAST_USE_TIME date "yyyyMMddhh24miss",  
 STATUS integer) 
 
LOAD DATA
INFILE "/home/oracle/TB_GH_WLAN_TOKEN.dat"
APPEND
INTO TABLE GAME_HALL_TOKEN_TEMP
FIELDS TERMINATED BY '$'
(id sequence(max,1),
 PHONE_NUMBER ,IMSI,TOKEN_VALUE,
 CREATE_TIME date "yyyyMMddhh24miss",
 LAST_USE_TIME date "yyyyMMddhh24miss",
 STATUS integer)
 
具体sqlldr使用可以参考oracle帮助
 
需要注意的问题有:
1、主键的生成
2、日期格式处理
3、空值的处理
4、大数据量导入可以目标库中先不建索引,导入后再加上索引,应该可以加快导入速度

原文地址:https://www.cnblogs.com/ylqmf/p/2453165.html