`

脚本数据迁移

 
阅读更多

     有一个数据迁移的工作,需要把A数据库的两张表的内容关联起来,根据条件导入到各个分库中,分库的库名在A库查询出来的一个字段中.简而言之就是根据结果集把数据倒入不同的数据库中。

      一,kettle 首先想到了使用kettle,根据查询的条件设置变量,然后在kettle中插入地方的数据库连接使用相应的变量设置,变量的设置如下图:



 

然后数据流转。

         二、shell 然后线上执行kettle脚本要同时连接来源库和目标库,我们没有这个环境同时可以连接两个库,而且怕有风险,所以修改使用脚本导出插入到每个数据库的sql脚本,首先想到了使用shell脚本编写,直接执行mysql命令,大概逻辑如下

for data in `{这里写sql命令};' |grep wiota | sed -e 's/\t/=/g' | sed 's/[ ]/%/g'` ;do
## 一些特殊字符需要先替换然后再替换回来
arrays[index++]=$data;
done
echo '记录总条数'${#arrays[@]};
for item in ${arrays[@]}; do
arr=(${item//=/ })
{这里处理切分出来后的结果}
echo '{插入的sql}  | sed -e 's/%/ /g'>> oasHotelInfo.sql
done

 

      三、 python 然后发现结果集中有空字符串,然后shell拆分的时候结果会少,例如,,拆分出来会只有两个结果,少一个结果会,所以就切换成python编写。大概流程如下

#dev  database
con = mdb.connect(host='192.168.0.1m', port=3306, user='test', passwd='111111', db='test', charset='utf8')
 
cur=con.cursor() 
f = codecs.open('rs.sql', 'w+', 'utf-8')
try:
    cur.execute('{此处写sql内容}')
    f.write('set names utf8;\n')
    for data in cur.fetchall():
        temp = data[0]
        id = data[1]
        end = temp.find('.')
        db_name = 'db_'+domain[0:end]
        sql = 'INSERT INTO %s.tableName (colName) values(%s);' % (db_name,id)
        f.write(sql)
    print 'done'
finally:
    f.close()
    cur.close()
    con.close()

 

 

  • 大小: 35.7 KB
分享到:
评论

相关推荐

    shell脚本实现mysql从原表到历史表数据迁移

    放入centos服务器中解压,可配置化进行mysql从某张表到历史表的数据迁移。该脚本可根据表中日期进行数据的定时迁移

    大数据-数据迁移-hive、hbase、kudu迁移

    下面为从自建的数据中心迁移hadoop到华为云上适配大数据平台MRS的一次项目迁移,此项目涉及到hive、kudu、hbase 的数据迁移,数据总量达到了15T,此文档是耗时5月时间和时间的检验,通过脚本编辑批量迁移完成大数据...

    数据迁移脚本,数据泵导入导出,以及表分析等

    数据迁移脚本,数据泵导入导出,以及表分析等

    数据库优化--局部数据迁移

    然后,逐个执行存储过程,将原来数据迁移到新的表中。 5,删除存储过程,清理临时过程。 6,删除第1步中重命名的表。 7,分析新创建的表,生成表的统计信息 8,删除新创建的分区表。 9,创建原来存储过程使用的临时...

    数据库优化--局部数据迁移结果验证

    1、data_conf数据比较脚本(组织关系表的数据比较,业务数据比较); 2、table_analysis数据表分析结果统计; 3、table_info数据表信息获取(普通数据表的表结构信息获取,分区数据表的分区数据信息获取)。

    oracle数据迁移

    描述oracel10g的数据迁移方法,描述oracel10g的数据迁移方法,描述oracel10g的数据迁移方法

    国产数据库kingbase数据迁移到mysql、DB2

    针对国产数据库kingbase中数据迁移到mysql和DB2的一个小工具~~ 开发的时候写的方便自己用的一个小工具,想看源码直接winrar进去看就成~

    Redis数据导入导出以及数据迁移的4种方法详解

    主要介绍了Redis数据导入导出以及数据迁移的4种方法详解,需要的朋友可以参考下

    mongo数据迁移到mysql的python脚本

    mongodb的数据迁移到mysql数据库中脚本, 在迁移前需要将mysql的表创建完成,他只负责数据同步

    docker安装的jenkins迁移脚本

    jenkins docker 迁移脚本,在新的主机上运行脚本,新启动docker-jenkins包括数据迁移

    ETL工具、脚本和数据迁移

    随着信息量的不断增长,企业数据仓库的数据量也随着日常生产和业务处理的增长而不断增加,这随之对...本文将着重介绍在数据仓库迁移中的ETL过程和数据加载的迁移方法,并且以真实客户迁移为例,向读者介绍了如何通过与

    MySQL+人大金仓+数据迁移

    MySQL+人大金仓+数据迁移

    python制作mysql数据迁移脚本

    用python写了个数据迁移脚本,主要是利用从库将大的静态表导出表空间,载导入到目标实例中。 #!/usr/bin/env python3 #-*- coding:utf8 -*- #author:zhanbin.liu #!!!!!DB必须同版本 #python3环境 pip3 install ...

    datax数据迁移shell

    依据时间字段增量 1、创建要迁移表的文件,文件和脚本在同一级目录,名称为: transfer.txt 2、文件格式为:表名+列名+开始时间+结束时间(以+隔开) 3、迁移数据 4、记录迁移信息到目的库

    基于Java的Elasticsearch数据同步迁移工具设计源码

    本设计源码提供了一个基于Java的Elasticsearch数据同步迁移工具。...该工具支持不同Elasticsearch版本间的数据迁移同步,包括实时增量同步和全量同步,适合用于学习和实践Java技术,以及开发数据同步相关的系统。

    mongodb数据迁移脚本

    支持导出,导入,压缩打包,解压

    Mysql迁移Oracle方案

    2 数据迁移 2.1 数据准备 2.1.1 生产数据备份 2.1.2 导入机还原备份文件 2.2 Oracle SQL Developer配置连接 2.2.1 连接本机mysql数据库 2.2.2 连接生产oracle数据库 2.3 执行迁移 2.3.1 关联移植资料档案库 2.3.2 ...

    ceph整体在线迁移自动化脚本

    ceph整体在线迁移自动化脚本,通包括crush.sh rule.sh target.sh config.ini等文件

    Hadoop数据迁移--从Oracle向Hadoop.zip

    hadoop数据从oracle导入与导出

Global site tag (gtag.js) - Google Analytics