发布网友 发布时间:2022-04-10 04:47
共3个回答
懂视网 时间:2022-04-10 09:08
最近迁移DB2数据库从AIX到Linux平台:需要整理所有服务器编目,服务器有aix和linux,手动整理肯定较慢切容易出错,下面写脚本解决。
策略:
1、编写脚本提取服务器编目的脚本,编目信息保存到文件。
2、ansible分发到各台Linux服务器,aix没有ssh认证的需手动完成。
3、ansible批量执行脚本,提取信息到文件。
4、ansible拉取各台服务器编目信息文件到本机。
5、本机编写脚本批处理,生成csv格式。
下面给出关键处理脚本:
获取编目信息到文件:
#!/bin/bash #linux平台 db_host=`hostname` db_ip=$(ifconfig -a | grep "inet addr" | grep -v "127.0.0.1" | awk ‘{print $2}‘ | awk -F‘:‘ ‘{print $2}‘) who_am=`whoami` db2 list db directory > ${db_ip}_${who_am}_${db_host}.db db2 list node directory > ${db_ip}_${who_am}_${db_host}.node #!/usr/bin/ksh #aix平台 db_host=`hostname` db_ip=`ifconfig -a | sed -n "5,5p" | awk ‘{print $2}‘` who_am=`whoami` db2 list db directory > ${db_ip}_${who_am}_${db_host}.db db2 list node directory > ${db_ip}_${who_am}_${db_host}.node
批处理各台服务器编目:
#!/bin/bash #bash $0 catadir linux|aix db|node #脚本运行时有三个参数: # 1、编目信息文件所在目录, # 2、平台linux或aix # 3、所要生成的编目类型,node或db if [ $# -ne 3 ]; then echo "bash $0 catadir linux|aix db|node" exit 1 fi cata_dir="$1" os_sys="$2" db_node="$3" os_linux="linux" os_aix="aix" db="db" node="node" catalog_node="catalog_node_`date +%F`" catalog_db="catalog_db_`date +%F`" for file in $(find ${cata_dir} -name "*.${db_node}" | awk -F‘/‘ ‘{print $2}‘) do #echo filename:$file ip_user="${file%_*}" db_host="${ip_user%_*}" db_user="${ip_user#*_}" #linux node if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${node}"x ]]; then cat ${cata_dir}/${file} | egrep ‘Node name|entry type|Protocol|Hostname|Service name‘ | awk ‘{print $NF}‘ | awk ‘{printf $0","} NR%5==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_node} fi #aix node if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${node}"x ]]; then cat ${cata_dir}/${file} | grep -e "节点名" -e "目录条目类型" -e "协议" -e "主机名" -e "服务名称" | awk ‘{print $NF}‘ | awk ‘{printf $0","} NR%5==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_node} fi #linux db if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${db}"x ]]; then #间接db cat ${cata_dir}/${file} | egrep ‘alias|Database name|entry type|partition‘ | awk ‘{print $NF}‘ | grep -A 1 -B 2 "Indirect" | grep -v "--" | awk ‘{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_db} #远程db cat ${cata_dir}/${file} | egrep ‘alias|Database name|Node name|entry type|partition‘ | grep -A 1 -B 3 "Remote" | grep -v "--" | awk ‘{print $NF}‘ |awk ‘{printf $0","} NR%5==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_db} fi #aix db if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${db}"x ]]; then #间接db cat ${cata_dir}/${file} | egrep ‘数据库别名|数据库名称|目录条目类型|目录数据库分区号‘ | awk ‘{print $NF}‘ | grep -A 1 -B 2 "间接" | grep -v "--" | awk ‘{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_db} #远程db cat ${cata_dir}/${file} | egrep ‘数据库别名|数据库名称|节点名|目录条目类型|目录数据库分区号‘ | grep -A 1 -B 3 "远程"| grep -v "--" | awk ‘{print $NF}‘ |awk ‘{printf $0","} NR%5==0 {print db_host","db_user}‘ db_host="$db_host" db_user="$db_user" >> ${catalog_db} fi done exit $?
db2编目抽取
标签:one bash 运行 toc 批处理 inux net 数据 保存
热心网友 时间:2022-04-10 06:16
增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取、转换和装载)实施过程中需要重点考虑的问题。在ETL过程中,增量更新的效率和可行性是决定ETL实施成败的关键问题之一,ETL中的增量更新机制比较复杂,采用何种机制往往取决于源数据系统的类型以及对增量更新性能的要求。本文不就某个ETL增量抽取的具体机制作深入探讨,重点对各种方法进行对比分析,从而总结各种机制的使用条件和优劣性,为数据仓库项目中ETL工程的实施提供增量抽取技术选型方面的参考。热心网友 时间:2022-04-10 07:34
可以使用ibm的产品TDI进行数据抽取,支持各种数据库,可以支持增量抽取。