美文网首页
记一次数据库迁移的经历(数据库表的格式有变动)

记一次数据库迁移的经历(数据库表的格式有变动)

作者: JASONGAOJS | 来源:发表于2018-09-10 14:47 被阅读0次

s表数据结构

表一 表二 表三

目标:将表一的数据迁移到表二、表三里面,一分为二。表二里面放产品主体,表三里面放多规格

原因:

由于之前设计表的经验不足,没有考虑到产品多规格的情况,写到快完成的时候,才想到用两张表实现产品的多规格(引以为戒,以后设计表的时候,要多方面考虑)。之前用一张表的时候是用checked字段区分产品是否为多规格的,如果是单规格和多规格的主体,就存1。否则就存多规格主体的ID。最终导致现在上传了2915个产品(包括多规格)。管理很混乱,数据比较多,不可能手工重新传了的。只能做数据迁移。

实现思路有两种办法:

一、通过实体类迁移数据。

1.创建originCommodity(表一),commodity(表二),commodityDetail(表三)实体类
2.通过dao获取所有的originCommodity数据(获取所有的数据)。用for循环将originCommodity里面的数据分割为两张表commodity、commodity。并通过dao的inster批量创建commodity、commodityDetail数据(需要写sql批量插入数据)

二、手动navicat软件+少量sql

将表一里面的数据导入本地的数据库,通过navicat软件手动将不同的字段更改为表二里面的字段,不需要的字段直接删除。之后将数据直接导入到表二,完成迁移。(这是最笨的方法进行迁移。但是迁移的时候需要注意的是ID,表一的是uuid生成的ID,表二是自增ID)。

1.将表一分成两个表,commodity、commodityDetail。 commodity里面全部放checked=1的数据(主体)。commodityDetail里面存checked!=1的数据(多规格)。(创建两个表,复制表一里面的全部数据,将commodity里面的checked!=1的删除,将commodityDetail表里面的checked=1的数据删除,完成创建)
2.增加一个在commodity里面增加一个origin_id(原来的uuid),用来存放之前的ID。将commodity的ID更改为origin_id。id为自增ID
3.更改commodityDetail表里面的checked字段,需要将commodityDetail里面的checked等于commodity表里面的origin_id的数据变为commodity的自增ID。

用方法二处理数据遇到的问题:

由于想要尽快的处理这个问题,我选择了方法二,用最笨的方法处理数据。一路都很顺利的处理完成了。结束之后,我就将原来的commodity删除了。因为要将表里面的数据的ID更改为自增ID,而且开始的时候是新增了自增ID的字段的,之后将原来的uuid字段更改为了origin_id。这样方便其他表关联这张表的时候,可以通过origin_id获取更改之后的ID。但是有一张表我遗漏了,没有将表里面的ID更改,就将这个origin_id删除了。导致现在有一张表无法获取ID。因此,这种方法是一个很笨切不能从用的笨办法,如果用第一种方法,就不会出现这种问题了。
还好这次更改的只是测试数据,下次重新用第一种方法试一次

数据库需要用到的命令

一、 将sql数据签出并放到本地:

mysqldump  -hlocalhost  -uroot --databases  数据库名 | gzip > /root/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

scp root@ip地址:/root/sql文件名 ./Desktop   // 将文件复制到本地

边纪录,边成长
end

相关文章

  • 记一次数据库迁移的经历(数据库表的格式有变动)

    s表数据结构 目标:将表一的数据迁移到表二、表三里面,一分为二。表二里面放产品主体,表三里面放多规格 原因: 由于...

  • 8、Django_更改数据表、完整删除数据表、导入、导出数据

    迁移数据库/更改数据表 迁移数据库有两条命令: 执行python manage.py makemigrations...

  • ocr迁移测试总结

    随着业务的增加,数据库中表(集合)太多不便于管理等问题,会出现数据库表迁移的需求,即将老数据库中的一些表迁移到新数...

  • FMDB 关于数据库升级那些事

    数据库升级在数据库中增加字段 一 表迁移 步骤 旧表改名 2.创建新表 3.迁移旧表数据 4.创建数据迁移成功标记...

  • 【SQLite3数据库】数据库迁移问题

    数据库迁移 什么是数据迁移? 数据库表结构发生了改变,或新增了表,app更新的时候,这些变化需要更新到新的app中...

  • oracle数据库迁移

    背景:需要将数据库迁移到另外一台实例上,全量迁移数据库实例,但是只迁移表结构,数据不需要迁移,具体迁移过程如下。 ...

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

    一、前言 这里记录一次将MySQL数据库中的表数据迁移到Oracle数据库中的全过程 ,使用工具 Navicat,...

  • laravel 单元测试

    建模型 含数据迁移文件 创建修改模型迁移文件 执行最新数据迁移 回滚一次(如果之前漏了写错 重新构建数据库表(别...

  • Laravel框架学习笔记之数据迁移

    数据库迁移 —— 以版本控制的方式维护数据表 简介 所谓迁移就像是数据库的版本控制,这种机制允许团队简单轻松的编辑...

  • 数据库拆库

    数据库表多了,数据量大了,会影响数据库性能,所以需要拆库。需要把项目中,所有需要迁移的表的数据库模型调用地方,修改...

网友评论

      本文标题:记一次数据库迁移的经历(数据库表的格式有变动)

      本文链接:https://www.haomeiwen.com/subject/hctxgftx.html