Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137363
  • 博文数量: 25
  • 博客积分: 460
  • 博客等级: 下士
  • 技术积分: 252
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-11 10:48
个人简介

努力学习,谦虚请教,不断提升!

文章分类

全部博文(25)

文章存档

2015年(3)

2014年(4)

2013年(3)

2012年(9)

2011年(6)

我的朋友

分类: DB2/Informix

2013-06-14 14:19:39


点击(此处)折叠或打开

  1. #!/usr/bin/env sh
  2. #
  3. # File: hpl.sh
  4. # Creation Date: 2013/6/14 11:02:28
  5. # Last Modified: 2013/6/14 11:02:29
  6. # Purpose:脚本使用informix HPL导出导入数据,可灵活导出导入一张或多张表
  7. #
  8. #-----------------------------------------------------------------------------------
  9. usage()
  10. {
  11.     echo "=================使用说明=================== "
  12.     echo "Usage: "
  13.     echo " `basename $0` [-d] -t [-p u] "
  14.     echo " `basename $0` [-f] [-d] -t -p l "
  15.     echo " "
  16.     echo "Options: "
  17.     echo " -d destdbname 目标表空间名称,默认为tnmsdb2 "
  18.     echo " -f fromdbname 源表空间名称,默认为tnmsdb2 "
  19.     echo " -t tables      表名称 "
  20.     echo " -p parameters 导出导入参数 u 为导出,l 为导入,默认为导出l "
  21.     echo " "
  22.     echo "例子: "
  23.     echo "导出一张表: "
  24.     echo " `basename $0` -d tnmsdb2_hn -t ems_event_history -p u "
  25.     echo "导出多张表: "
  26.     echo " `basename $0` -d tnmsdb2_hn -t ems_event_history,ems_event -p u "
  27.     echo "导入一张表: "
  28.     echo " `basename $0` -f tnmsdb2_hn -d tnmsdb2 -t ems_event_history -p l "
  29.     echo "导入多张表: "
  30.     echo " `basename $0` -f tnmsdb2_hn -d tnmsdb2 -t ems_event_history,ems_event-p l "
  31.     echo "使用默认参数导出: "
  32.     echo " `basename $0` -t "ems_event_history ems_event" "
  33.     echo "使用默认参数导入: "
  34.     echo " `basename $0` -t "ems_event_history ems_event" -p l "
  35.     exit 0
  36. }
  37. #程序选项
  38. while getopts "d:f:t:p:" OPTION
  39.    do
  40.       case $OPTION in
  41.             d) destdbname="${OPTARG}"
  42.                ;;
  43.             f) fromdbname="${OPTARG}"
  44.                ;;
  45.             t) tables="${OPTARG}"
  46.                  ;;
  47.             p) parameters="${OPTARG}"
  48.                  ;;
  49.             *|?) usage
  50.                ;;
  51.       esac
  52. done
  53. #检查脚本后面是否有跟参数
  54. if [ $# = 0 ];then
  55.     echo "error:`basename $0` parameter is error"
  56.     usage
  57.     exit 0
  58. fi
  59. #初始化参数
  60. parameter()
  61. {
  62.     #获取表名称
  63.     if [ -z "$tables" ];then
  64.         echo error:table name is not exist.
  65.         echo "例如:`basename $0` -t "ems_event_history ems_event""
  66.         exit 0
  67.     else
  68.         names=$tables
  69.     fi
  70.     #目标表空间名称默认为tnmsdb2
  71.     if [ -z $destdbname ];then
  72.         destdbname=tnmsdb2
  73.     fi
  74.     #源表空间名称默认为tnmsdb2
  75.     if [ -z $fromdbname ];then
  76.         fromdbname=tnmsdb2
  77.     fi
  78.     #参数默认为导出u
  79.     if [ -z $parameters ];then
  80.         parameters=u
  81.     fi
  82. }
  83. #数据导出函数
  84. unload()
  85. {
  86.     onpladm create project outport_data
  87.     onpladm create job $tabname -p outport_data -d $destdbname/record/$tabname -D$destdbname -t $tabname -fu -zD
  88.     onpladm run project outport_data -fu
  89.     #onpladm delete job $tabname -fu
  90.     onpladm delete project outport_data
  91.     #onpladm list job
  92. }
  93. #数据导入函数
  94. load()
  95. {
  96.     onpladm create project import_data
  97.     onpladm create job $tabname -p import_data -d $fromdbname/record/$tabname -D$destdbname -t $tabname -flc -zD
  98.     onpladm run project import_data -fl
  99.     #onpladm delete job $tabname -fl
  100.     onpladm delete project import_data
  101. }
  102. #导出表结构
  103. dbschema()
  104. {
  105.     dbschema -d $destdbname -t $tabname -ss $destdbname/schema/$destdbname.sql
  106. }
  107. #开始执行程序
  108. parameter
  109. if [ $parameters = u ];then
  110.     if [ ! -d $destdbname ];then
  111.         mkdir $destdbname
  112.         mkdir $destdbname/record
  113.         mkdir $destdbname/schema
  114.     else
  115.         echo "$destdbname目录已存在,请先删除此目录再执行."
  116.         exit 0
  117.     fi
  118. fi
  119. #删除onpload数据库(project和job信息都存放在onpload数据库中)
  120. echo 'drop database onpload;'|dbaccess sysadmin
  121. if [ $? -eq 0 ];then
  122.     echo "onpload库删除成功"
  123. else
  124.     echo "onpload库不存在,可以忽略此报错."
  125. fi
  126. #执行导出导入程序
  127. for tabname in $names
  128. do
  129.     #导出数据
  130.     if [ $parameters = u ];then
  131.         unload
  132.     fi
  133.     #导入数据
  134.     if [ $parameters = l ];then
  135.         load
  136.     fi
  137. done


阅读(1841) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~