zoukankan      html  css  js  c++  java
  • 定时将上月的数据导入到Oracle中,并更新指定的列

    原理:利用Oracle中的sqlldr和Linux的定时任务crontab实现

    用v_inst_users表举例:

    数据库表v_inst_users:

    CREATE TABLE V_INST_USERS
    (
    imsi VARCHAR2(60),
    telephone VARCHAR2(20),
    city_code VARCHAR2(20),
    log_date DATE
    )
    shell脚本import.sh:

    #!/bin/sh
    #设置必要的环境变量(使用定时器的时候必须设置环境变量)
    export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    ORACLE_HOME=/u01/app/oracle/product/102/db_1
    export ORACLE_HOME

    date=`date +%Y%m%d`
    mon=`date +%Y%m`

    #ctl文件目录
    ctldr=/home/oracle/data/ctl
    #导入日志目录
    cd /home/oracle/data/ctllog

    if [ ! -d "$mon" ]; then
    mkdir $mon
    echo "创建月目录$mon"
    fi
    cd $mon
    if [ ! -d "$date" ]; then
    mkdir $date
    echo "创建天目录$tt"
    fi

    #导入
    $ORACLE_HOME/bin/sqlldr userid/password@orcl control=$ctldr/imp_to_v_inst_users.ctl log=$logdr/log_v_inst_users_$date.log bad=$logdr/bad_v_inst_users_$date.log;
    控制文件imp_to_v_inst_users.ctl:
    LOAD DATA
    INFILE 'V_INST_USERS.ITF'
    APPEND INTO TABLE v_inst_users
    FIELDS TERMINATED BY ','
    TRAILING NULLCOLS
    (
    imsi,
    telephone,
    city_code,
    log_date DATE "YYYY-MM-DD HH24:MI:SS"
    )
    数据文件V_INST_USERS.ITF:

    460030406111111,13311111111,4206,2016-05-18 21:57:29
    460110451222222,18022222222,4414,2016-05-18 21:57:32
    460036121333333,15333333333,3204,2016-05-18 22:10:04

    定时任务配置:
    执行命令:crontab -e 编辑定时任务

    40 9 * * * /home/oracle/data/import.sh > /home/oracle/data/importlog/import_`date +"\%Y\%m\%d"`.log
    ————————————————
    版权声明:本文为CSDN博主「进击的巨喵」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xiaowenK/article/details/51668690

  • 相关阅读:
    一个简单的MVVM雏形
    sass学习笔记1
    col标签的相关实验
    背景半透明rgba最佳实践
    angular性能优化心得
    环视非捕获分组
    5月23日Google就宣布了Chrome 36 beta
    浏览器 user-agent 字符串的故事
    迷你MVVM框架 avalonjs 沉思录 第3节 动态模板
    迷你MVVM框架 avalonjs 1.3.1发布
  • 原文地址:https://www.cnblogs.com/wenr-one/p/12498670.html
Copyright © 2011-2022 走看看