数据迁移

编写python脚本,生成迁移数据SQL

泪湿孤枕 提交于 2020-01-17 08:41:05
从一个表中查询数据并且修改后插入另一个表,利用python脚本读取CSV或者Execl文件。 #!/usr/bin/env python # _*_ conding:utf-8 _*_ import sys import os # import xlrd import pandas as pd # id映射的execl表 第一列是原始id 第二列新导入id fileName = "test.csv" # 生成sql文件的名字 temp = "temp" # sql的模板 sql = ''' INSERT IGNORE INTO devops_app_service_version( helm_config_id, harbor_config_id, version, app_service_id, value_id, readme_value_id, image, commit, repository, object_version_number, created_by, creation_date, last_updated_by, last_update_date) SELECT helm_config_id, harbor_config_id, version, {}, value_id, readme_value_id, image, commit, repository,

Django框架之数据库ORM框架

邮差的信 提交于 2020-01-10 22:08:23
首先,我来介绍一下什么是ORM框架: O是object,也就 类对象 的意思,R是relation,翻译成中文是关系,也就是关系数据库中 数据表 的意思,M是mapping,是 映射 的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们 通过类和类对象就能操作它所对应的表格中的数据 。ORM框架还有一个功能,它可以 根据我们设计的类自动帮我们生成数据库中的表格 ,省去了我们自己建表的过程。 django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。 使用django进行数据库开发的步骤如下: 配置数据库连接信息 在models.py中定义模型类 迁移 通过类和对象完成数据增删改查操作 Django框架--ORM框架--数据库的关系,如下图所示: 既然用到的数据库,那么我们就不得不提python中一个第三方模块pymysql 1. 安装pymysql pip install PyMySQL 2. 在Django工程的同名目录下的init文件中添加如下代码: from pymysql import install_as_MySQLdb install_as_MySQLdb() 这两句代码主要作用是,让Django框架能够以ORM框架的方式调用PyMySQL模块。 3. 修改数据库配置信息 DATABASES =

分库分表?如何做到永不迁移数据和避免热点?

笑着哭i 提交于 2020-01-10 08:56:28
前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。 有垂直和水平两种 。 垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。 水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。 上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,再分表;把压力从数据库层级分开。 分库分表方案 分库分表方案中有常用的方案,hash取模和range范围方案;分库分表方案最主要就是路由算法,把路由的key按照指定的算法进行路由存放。下边来介绍一下两个方案的特点。 hash取模方案 在我们设计系统之前,可以先预估一下大概这几年的订单量,如:4000万。每张表我们可以容纳1000万,也我们可以设计4张表进行存储。 那具体如何路由存储的呢?hash的方案就是对指定的路由key(如:id)对分表总数进行取模,上图中,id=12的订单,对4进行取模,也就是会得到0,那此订单会放到0表中。id=13的订单,取模得到为1,就会放到1表中。为什么对4取模,是因为分表总数是4。 优点: 订单数据可以均匀的放到那4张表中,这样此订单进行操作时

HBase存储剖析与数据迁移

拈花ヽ惹草 提交于 2020-01-10 02:55:42
1.概述   HBase的存储结构和关系型数据库不一样,HBase面向半结构化数据进行存储。所以,对于结构化的SQL语言查询,HBase自身并没有接口支持。在大数据应用中,虽然也有SQL查询引擎可以查询HBase,比如Phoenix、Drill这类。但是阅读这类SQL查询引擎的底层实现,依然是调用了HBase的Java API来实现查询,写入等操作。这类查询引擎在业务层创建Schema来映射HBase表结构,然后通过解析SQL语法数,最后底层在调用HBase的Java API实现。   本篇内容,笔者并不是给大家来介绍HBase的SQL引擎,我们来关注HBase更低层的东西,那就是HBase的存储实现。以及跨集群的HBase集群数据迁移。 2.内容   HBase数据库是唯一索引就是RowKey,所有的数据分布和查询均依赖RowKey。所以,HBase数据库在表的设计上会有很严格的要求,从存储架构上来看,HBase是基于分布式来实现的,通过Zookeeper集群来管理HBase元数据信息,比如表名就存放在Zookeeper的/hbase/table目录下。如下图所示: 2.1 Architecture   HBase是一个分布式存储系统,底层数据存储依赖Hadoop的分布式存储系统(HDFS)。HBase架构分三部分来组成,它们分别是:ZooKeeper

HBase 数据迁移方案介绍

无人久伴 提交于 2020-01-10 02:13:54
一、前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类。下面分别介绍一下。 二、Hadoop层数据迁移 2.1 方案介绍 Hadoop层的数据迁移主要用到DistCp(Distributed Copy), 官方描述是: DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。 我们知道MR程序适合用来处理大批量数据, 其拷贝本质过程是启动一个MR作业,不过DisctCp只有map,没有reducer。在拷贝时,由于要保证文件块的有序性,转换的最小粒度是一个文件,而不像其它MR作业一样可以把文件拆分成多个块启动多个map并行处理。如果同时要拷贝多个文件,DisctCp会将文件分配给多个map,每个文件单独一个map任务。我们可以在执行同步时指定 -m 参数来设定要跑的map数量,默认设置是20。如果是集群间的数据同步,还需要考虑带宽问题,所以在跑任务时还需要设定 bandwitdh 参数,以防止一次同步过多的文件造成带宽过高影响其它业务。同时

技术沙龙 | 云时代下的架构演进—企业云及云原生技术落地实践

断了今生、忘了曾经 提交于 2020-01-08 16:38:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 云改变了IT行业的形态和市场格局,催生了应用的发展。随着云计算技术的不断演进,作为一名优秀的架构师,必须深入了解云计算平台的特点及架构设计,包括构建数据库、大规模落地微服务、Service Mesh和全链路监控等才能紧跟时代的步伐。 12月21日,京东云开发者社区和英特尔联合举办的「 云时代下的架构演进—企业上云及云原生技术落地实践 」沙龙在北京顺利召开,在本次活动中来自京东技术专家从顶层视角解读京东集团的云化之路、京东物流的上云之路、探寻数据库上云的探索之路、京东云的落地服务网格和DevOps系统,五个模块同现场的百位技术从业者进行了分享与交流。 1 京东的集团上云之路 京东云客户成功部架构师 汤源 对于京东云来说,必定要走一条与其他云厂商不同的道路,而京东云认为,集团上云就是京东云与其他云厂商的重要差异点。因此,集团上云在京东内部就是一个战略方向,京东云客户成功部专家级架构师汤源解释道,京东的战略就是构建以零售为基础的技术与服务。这个技术服务是TO B的技术与业务能力,需要去变现,它必须要有一个商业平台,因此,京东集团做公有云,在战略层面是坚定不移的。京东内部也是非常全面的去认识集团上云,但京东云的集团上云,并不是说要转变京东云的业务方向,也不是狭义上集团把自有业务迁移上云(Cloud Migration)

Docker数据持久化与容器迁移

限于喜欢 提交于 2019-12-29 09:57:24
上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据。如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据。那么,来一一看下各自的使用方法。 一、数据卷 数据卷特性: 可以绕过UFS文件系统,为一个或多个容器提供访问。 完全独立于容器的生存周期,因此不会在删除容器时删除其挂在的数据卷。 数据卷特点: 数据卷在容器启动初始化时,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。 数据卷可以在容器直接共享和重用。 可以直接对数据卷里的内容进行修改。 数据卷的变化不会影响镜像的更新。 卷会一直存在,即使挂载数据卷的容器已经删除。 1.数据卷使用 创建并挂载数据卷: $ sudo docker run -itd --name ubuntu_test1 -v /container_data:/data ubuntu 注:container_data为宿主机目录,/data是容器中目录,目录不存在会自动创建 $ sudo docker inspect ubuntu_test1 "Mounts": [ { "Source": "/container_data", "Destination": "

22_Sqoop数据迁移工具

好久不见. 提交于 2019-12-28 02:53:31
Sqoop数据迁移工具 准备: 安装好对应版本的mysql 安装好对应版本的hadoop集群 安装好对应版本的hive 1. Sqoop是什么 Sqoop是apache旗下的一款 ” Hadoop和关系数据库之间传输数据 ”的工具 导入数据 import 将MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统 导出数据 export 从Hadoop的文件系统中导出数据到关系数据库 2. Sqoop的工作机制 将导入和导出的命令翻译成mapreduce程序实现 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制 3. Sqoop基本架构 sqoop在发展中的过程中演进出来了两种不同的架构. 架构演变史 sqoop1的架构图 版本号为1.4.x0 sqoop2的架构图 版本号为1.99x为sqoop2 在架构上:sqoop2引入了sqoop server,对connector实现了集中的管理 访问方式:REST API、 JAVA API、 WEB UI以及CLI控制台方式进行访问 4. Sqoop安装部署 Sqoop安装很简单,解压好进行简单的修改就可以使用 1、下载安装包 http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.2.tar

从 MySQL 迁移数据到 Oracle 中的全过程

落爺英雄遲暮 提交于 2019-12-26 16:57:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、前言 这里记录一次将 MySQL 数据库中的表数据迁移到 Oracle 数据库中的全过程 ,使用工具 Navicat ,版本 12.0.11 操作环境及所用工具: mysql5.7 oracle18c windows Navicat12.0.11 idea 二、开始移植 点击 工具 -> 数据传输 左边 源 标识mysql数据库 , 右边 目标 标识要移植到的oracle数据库 高级选项中勾选 大写 温馨小提示: 如果字段名和表名都为小写,oracle操作数据的时候将会出现找不到表或视图的错误,解决方法是必须加上双引号才能查询到, 这样的话我们通过程序操作数据的时候必须加上双引号,即大大加重了迁移数据库后的工作量,因此这里需 勾选转换对象名为大写 ,同时在转换过程中如果字段名出现oracle关键字的话,它会自动给我们加上双引号解决关键字的困扰!!! 【 ex: user -> "USER" number -> "NUMBER" desc -> "DESC" level -> "LEVEL" 】 选择需要移植的表,这里我一把梭全选了~ 然后等待数据传输完成 如果最后遇到如下情况,可暂不管,直接关闭即可~ 然后查看oracle,如下,数据导入成功 温馨小提示:传输过程中可能会存在有部分几张表不成功

从 MySQL 迁移数据到 Oracle 中的全过程

房东的猫 提交于 2019-12-26 03:20:09
一、前言 这里记录一次将 MySQL 数据库中的表数据迁移到 Oracle 数据库中的全过程 ,使用工具 Navicat ,版本 12.0.11 操作环境及所用工具: mysql5.7 oracle18c windows Navicat12.0.11 idea 二、开始移植 点击 工具 -> 数据传输 左边 源 标识mysql数据库 , 右边 目标 标识要移植到的oracle数据库 选择需要移植的表,这里我一把梭全选了~ 然后等待数据传输完成即可 如果最后遇到如下情况,可暂不管,直接关闭即可~ 然后查看oracle,如下,数据导入成功 三、问题 1、oracle自增主键问题 oracle设置自增主键的几种方式: 序列 + 触发器 序列 + Hibernate配置 (注:此方式仅适用于通过Hibernate连接数据库的方式) oracle12c版本之后新增 自增列语法 GENERATED BY DEFAULT AS IDENTITY 思路: 将ddl 创建表sql中添加自增主键ID的命令,重新创建一次表结构,然后再将oracle中的数据单独导入 这里由于小编oracle版本为18c 因此在创建表的时候加上自增主键语法即可完成! ① idea中如下查看ddl 然后将ddl拷贝到一个txt文本文件中保存 ② ddl文件内容替换自增主键工具类 public class