精华内容
下载资源
问答
  • 好久没写东西了,今天工作需要查了些资料,给出了一个完善的数据迁移过程。确保数据完整性、准确性、安全性。 我翻译了一下,画了个图。 供大家参考 ...

    好久没写东西了,今天工作需要查了些资料,给出了一个完善的数据迁移过程。确保数据完整性、准确性、安全性。

    我翻译了一下,画了个图。

    供大家参考

    展开全文
  • 数据迁移测试

    千次阅读 2016-09-05 10:09:34
    数据迁移测试的关注点

    在这几年的测试工作中,往往会涉及到数据迁移的测试,总结一下数据迁移测试的关注点:

    1、迁移数据的完整性,主要是数据条数,该迁移的是否都前移到了新的数据库。

    2、迁移数据在新的数据库中的正确性,主要注意点:

    1)旧数据非必输字段,在新数据库中必输,这种数据的处理是否正确。

    2)对于单选或多选字段,旧数据与新数据的选项是否一致,若不一致,是否处理正确。

    3、迁移数据在系统界面显示的正确性,包含数据条数,每个字段的显示信息都正确。

    4、新测试环境对迁移数据的继续处理:

    1)对旧数据进行修改、删除等操作是否都正确。

    2)旧数据在新的流程中流转的正确性。

    3)新环境对旧数据统计的正确性。

    暂时就这几点吧,后面有用到的再补充。

    展开全文
  • 因为之前其它开发商系统的数据库设计极烂,所以这次数据迁移稍微显得麻烦,而数据迁移最大的要求就是保证数据的正确。 在此把这次迁移的方式记录下来,也希望以后有所提升之后能有更好的方案。 总体的方

    作为一个后端开发者, 需要处理的问题会非常多非常杂,不断的接触各方面的知识,总结心得才能有所提高。

    最近我们将甲方的信披系统改造后并入了我们的系统,开发基本完成,接下来数据迁移就是一个大问题了。因为之前其它开发商系统的数据库设计极烂,所以这次数据迁移稍微显得麻烦,而数据迁移最大的要求就是保证数据的正确性。

    在此把这次迁移的方式记录下来,也希望以后有所提升之后能有更好的方案。


    总体的方案上  是先把原库的表导入到我们库,然后写存储过程,对重构的字段做对应,然后导入到我们的新表之中,最后删除老的表。


    原库的表导入我们库  我们在这里用到的是oracle的 exp imp命令

    注意exp imp命令直接在dos下运行就行  不需要进入sqlplus

    下面是exp命令和imp命令

    Exp disinfo2/disinfo2@disinfo2 log=disinfo_emp.log file=C:\Users\hundsun\Desktop\cbs信披改造迁移数据\dmp\disinfo.dmp 
    tables =(TBL_INFO_DISCLOSUER_APPLY,TBL_DISCLOSUER_APPLY_FILE,TBL_FILE_PATH,TBL_FILE_INFO,TBL_INFO_DISCLOSUER_HANDLE_LOG,TBL_DISCLOSUER_LEAVENET_LOG,TBL_DIRECTIONAL_INVESTORS)

    imp cfae_cbs/hundsun@1538CBS log=disinfo_imp.log file=C:\Users\hundsun\Desktop\cbs信披改造迁移数据\dmp\disinfo.dmp 
    tables =(TBL_INFO_DISCLOSUER_APPLY,TBL_DISCLOSUER_APPLY_FILE,TBL_FILE_PATH,TBL_FILE_INFO,TBL_INFO_DISCLOSUER_HANDLE_LOG,TBL_DISCLOSUER_LEAVENET_LOG,TBL_DIRECTIONAL_INVESTORS)

    意思应该都明确易懂, 用户名/密码 连接   日志输出地址  需要导入或导出的表。    文件做成bat或sh直接运行就可以了 非常的方便快捷。


    这样所有我需要的表都转移到我们自己的库里面。

    下一步就是写存储过程,重构对应字段了。


    下面是主表的迁移存储过程  关键的地方我添加了注释解释一下

    create or replace procedure sp_disinfo_apply_insert
    as
    
    --原信披库申请表中存储了所有历史数据  先改造成之前版本进入历史表  所以进入申请表的数据只为版本号最高的数据
    cursor cur_infordis_apply is  --此处是游标 批量导入数据基本都需要用到  相当于把数据做成一个list 方便之后foreach的循环导入
             select t.* from 
             ( select apply_id,
             title,
             status,
             is_directional,
             biz_resource,
             publish_method,
             is_cron_disclosure,
             announcement_type_name,
             announcement_type_id,
             DISCLOSUER_INSTITUTION,
             disclosuer_institution_name,
             rp_disclosuer_institution,
             rp_disclosuer_institution_name,
             publisher_mem_code,
             bond_id,
             bond_code,
             bond_short_name,
             bond_full_name,
             bond_type,
             contact_phone,
             contact_user,
             area_code,
             tel_number,
             contact_email,
             is_check,
             remarks,
             create_user_id,
             update_user_id,
             update_user_name,
             oper_user_id,
             registrstion_notice_paper_no,
             create_time,
             update_time,
             cron_publish_time,
             disclosure_time,
             tranfer_times,
    	--此处这个row_number()over  partition by 的用法 用于找到之前版本最高的数据 因为原库中没有设计历史表 所有历史数据全在主表里面靠一个版本字段做区分
    	--这样做非常不好  数据很乱  所以我们做了改动  这里我们需要拿到最高版本的数据
             row_number() over(partition by apply_id order by tranfer_times desc) rn from tbl_info_disclosuer_apply)t
             where rn=1;
    
    begin
             
         for apply in cur_infordis_apply
         loop
         --if apply.title='重复测试-001' then 
         DBMS_OUTPUT.ENABLE(buffer_size => null);
              -- 发布类型映射,例:PDF方式->1
    --申明变量
          declare
          --publish_method
             v_old_method varchar2(200);
             v_new_method number;
          --申请类型
             v_old_type varchar2(200);
             v_new_type varchar2(2);
          --所有时间字段
             v_old_create_date date;
             v_old_update_date date;
             v_old_cron_date date;
             v_old_disclosure_date date;
             v_new_create_date number(10);
             v_new_create_time number(10);
             v_new_update_date number(10);
             v_new_update_time number(10);
             v_new_cron_date number(10);
             v_new_cron_time number(10);
             v_new_disclosure_date number(10);
             v_new_disclosure_time number(10);
             --区号
             v_old_area varchar2(160);
             v_new_area varchar2(6);
             --版本号
             v_old_trans number(10);
             v_new_trans varchar(32);
          begin
            --publish_method转换
            v_old_method := apply.publish_method;
            if v_old_method='PDF方式' then
            v_new_method := 1;
            ELSE v_new_method := 2;
            end if;
            --所有时间字段
            v_old_create_date := apply.create_time;
            v_old_update_date := apply.update_time;
            v_old_cron_date := apply.cron_publish_time;
            v_old_disclosure_date := apply.disclosure_time;
            v_new_create_date:= TO_NUMBER(TO_CHAR(v_old_create_date, 'YYYYMMDD')) ;
            v_new_create_time:= TO_NUMBER(TO_CHAR(v_old_create_date, 'hh24miss')) ;
            v_new_update_date:= TO_NUMBER(TO_CHAR(v_old_update_date, 'YYYYMMDD')) ;
            v_new_update_time:= TO_NUMBER(TO_CHAR(v_old_update_date, 'hh24miss')) ;
            v_new_cron_date:= TO_NUMBER(TO_CHAR(v_old_cron_date, 'YYYYMMDD')) ;
            v_new_cron_time:= TO_NUMBER(TO_CHAR(v_old_cron_date, 'hh24miss')) ;
            v_new_disclosure_date:= TO_NUMBER(TO_CHAR(v_old_disclosure_date, 'YYYYMMDD')) ;
            v_new_disclosure_time:= TO_NUMBER(TO_CHAR(v_old_disclosure_date, 'hh24miss')) ;
            --申请类型转换 
            v_old_type := apply.announcement_type_name;
            CASE v_old_type
            WHEN '挂牌文件' THEN v_new_type:='1';
            WHEN '其他与挂牌相关的事项' THEN v_new_type:='2';
            WHEN '挂牌结果公告' THEN v_new_type:='3';
            WHEN '财务报告及摘要' THEN v_new_type:='4';
            WHEN '信用评级公告' THEN v_new_type:='5';
            WHEN '重大事项公告' THEN v_new_type:='6';
            WHEN '持有人会议公告' THEN v_new_type:='7';
            WHEN '本息资金划转公告' THEN v_new_type:='8';
            WHEN '未按期足额偿付本息公告' THEN v_new_type:='9';
            WHEN '其它' THEN v_new_type:='10';
            else v_new_type:=null;
            END case ;
            
            --区号截取
            v_old_area:=apply.area_code;
            if  lengthb(v_old_area)>6 then
            v_new_area:=SUBSTRB(v_old_area,0,6);
            
            elsif v_old_area is null then
            v_new_area:='';
            else
            v_new_area:=v_old_area;
            end if;
            dbms_output.put_line(apply.title);
            dbms_output.put_line(apply.apply_id);
            dbms_output.put_line(apply.tranfer_times);
     
            --插入数据
            insert into infodis_apply
            (apply_id,
             title,
             disclosure_status,
             is_directional,
             biz_resource,
             is_cron_disclosure,
             disclosure_method,
             disclosure_type,
             disclosure_agency,
             disclosure_agency_name,
             disclosure_client,
             disclosure_client_name,
             publisher_mem_code,
             bond_id,
             bond_code,
             bond_short_name,
             bond_full_name,
             bond_type,
             contact_phone,
             contact_name,
             area_code,
             tel_number,
             contact_email,
             is_check,
             remark,
             create_user_id,
             update_user_id,
             update_user_name,
             oper_user_id,
             reg_notice_number,
             create_date,
             create_time,
             update_date,
             update_time,
             cron_publish_date,
             cron_publish_time,
             disclosure_date,
             disclosure_time)
      values( apply.apply_id,
             apply.title,
             apply.status,
             apply.is_directional,
             apply.biz_resource,
             apply.is_cron_disclosure,
             v_new_method,
             v_new_type,
             apply.DISCLOSUER_INSTITUTION,
             apply.disclosuer_institution_name,
             apply.rp_disclosuer_institution,
             apply.rp_disclosuer_institution_name,
             apply.publisher_mem_code,
             apply.bond_id,
             apply.bond_code,
             apply.bond_short_name,
             apply.bond_full_name,
             apply.bond_type,
             apply.contact_phone,
             apply.contact_user,
             v_new_area,
             apply.tel_number,
             apply.contact_email,
             apply.is_check,
             apply.remarks,
             apply.create_user_id,
             apply.update_user_id,
             apply.update_user_name,
             apply.oper_user_id,
             apply.registrstion_notice_paper_no,
              v_new_create_date,
              v_new_create_time,
              v_new_update_date,
              v_new_update_time,
              v_new_cron_date,
              v_new_cron_time,
              v_new_disclosure_date,
              v_new_disclosure_time);     
              commit;
            end;
          -- end if;
          END loop;
    end sp_disinfo_apply_insert;
    
    之后的所有表也都按照此存储过程的模式写好存储过程导入。

    这里还有需要优化的地方 不同的字段对应方法可以写成function 可能会出现复用的情况。 可以写一个主过程来调用所有的存储过程一次性导入。

    总之可能自己接触的东西有限还有很多复杂得多的数据迁移需要实现,希望在之后不断学习,总结更好的方法。

    展开全文
  • Oracle数据迁移

    千次阅读 2018-08-24 07:09:00
    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移: 一、数据迁移工具 1、数据迁移工具 (1)数据泵 (2)外部表:external table (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载...

    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移:

    一、数据迁移工具

    1、数据迁移工具

    (1)数据泵

    (2)外部表:external table

    (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载到ORACLE数据库中

    (4)数据库备份工具:rman,recover manager恢复管理器

    2、逻辑导入导出工具

    (1)exp:逻辑导出工具

    (2)imp:逻辑导入工具

    3、数据泵

    (1)expdp:数据泵逻辑导出工具export data pump

    (2)impdp:数据泵逻辑导入工具import data pump

    4、数据库导出模式

    (1)全库导出

    (2)导出用户

    (3)导出表空间

    (4)导出表(数据泵)

    二、数据迁移实例

    使用exp,imp导入导出数据

    1、全库导出

    mkdir -p /home/oracle/backup/exp创建导出目录

    exp system/oracle file=all.dmp log=all_exp.log full=y

    2、导出用户

    select username from dba_users;先查看当前数据库拥有哪些用户

    (1)单用户hr导出

    单用户hr导入,在目标库中进行,导入库中需要提前创建用户hr,并赋予相应权限

    (2)多用户导出

    多用户导入

    3、导出表

    (1)单表导出

    导入

    (2)多表导出,导入

    使用数据泵导入导出数据

    通过调用dbms_datapump系统包来完成导入导出操作

    1、需要数据库创建目录对象,要把目录对象的读写权限授予相应的用户。

    (1)在操作系统中创建目录

    mkdir -p /home/oracle/backup/dir

    (2)在数据库中创建目录对象,指向上一步创建的目录

    create directory dbpump_dir as ‘/home/oracle/backup/dir’;

    (3)给相应用户读写权限,用到什么用户就赋予它读写权限

    grant read,write on directory dbpump_dir to system;

    (4)开始导入导出

    2、普通导入导出

    3、通过参数文件导入导出数据

    创建pfile.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_exp.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT.LOG

    TABLES=

    (

     HR.EMPLOYEES,HR.DEPARTMENTS

     )

    QUERY=

    (

     "EMPLOYEES:WHERE DEPARTMENT_ID > 10",

     "DEPARTMENTS:WHERE DEPARTMENT_NAME LIKE '%IT%'"

    )

    导入同样需要在目标库建立数据库目录对象

    create directory dbpump_dir as ‘/home/oracle/backup/dir1’;

    4、通过参数文件导入导出用户

    pfile_user.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_USER.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_USER.LOG

    SCHEMAS=U2,U1

    导入用户

    5、通过参数文件导入导出表空间

    pfile_tbs.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_TBS.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_TBS.LOG

    TABLESPACES=TBS1,TBS2,TBS3

    (1)要把目标库的表空间创建好

    (2)把表空间所属对象创建好

    (3)赋予相应对象权限

    导入

    三、外部表

    ORACLE外部表用来存取数据库以外的文本文件(test file)或ORACLE专属格式文件。因此,建立外部表时不会产生段,区,块等数据结构,只有与表相关的定义放在数据字典中,外部表,就是存储在数据库外的表,当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容修改。

    1、创建目录对象并授权,从9i开始,ORACLE数据库若要存取文件系统,就必须使用目录对象,以相对路径方式存取路径,强化数据库的安全性。

    2、从数据库导出数据到外部表

    create table ext_emp_query

    (first_name,last_name,department_name)

    organization external

    (type oracle_datapump

    default directory tab_dir

    location('emp1.exp','emp2.exp','emp3.exp')

    )

    parallel

    as

    select e.first_name,e.last_name,d.department_name

    from employees e,departments d

    where e.department_id=d.department_id and

    d.department_name in ('Marketing','Purchaing')

    3、外部插入数据

    create table hr.ext_tab2

    (id number,name varchar2(20))

    organization external

    (type oracle_loader

    default directory tab_dir

    location

    (tab_dir:'ext_tab1',

    tab_dir:'ext_tab2')

    );

    创建完成后需要自己到指定目录创建文件,如果文件提前存在,那么将无法查询到文件内容

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1

    展开全文
  • 数据迁移之数据验证

    千次阅读 2020-03-17 16:00:44
    数据验证分为两步: 1.数据量验证 数据量验证很简单,对比新老数据库的数据表数量,索引数量,触发器数量,视图数量即可。 2.数据完整性和一致性验证 需要取特定表特定字段进行对比 ...
  • 科普数据迁移技术和方法论

    千次阅读 2017-07-05 22:27:33
    各种迁移方案的光环下隐藏着专业工程师的汗水,每个数据迁移项目和任务都是一次未知的挑战,只要凭借丰富的经验和不断的演练才能保障客户的数据在生命周期管理期间有更好的明天。
  • Hive的数据迁移其实就是对Hive的数据进行导入导出的操作。如果数据表不是很多,我们可以直接使用Hive SQL来处理,一张一张表的导出,然后在进行导入。   对Hive的数据进行操作,常用的是登陆Hive客户端命令,常用...
  • 【专项测试】系统数据迁移

    万次阅读 2018-11-20 22:30:32
    新旧系统数据迁移 新旧系统数据迁移的实践与测试 新旧系统数据迁移  随着互联网这么多年的技术的发展,在现有发展的基础上,基本上2-3年的时间,业务的快速增长和技术的革新,原有的系统会不断被功能更强大的新...
  • MySQL 亿级数据导入导出/数据迁移笔记

    万次阅读 多人点赞 2018-09-09 17:10:49
    数据迁移,工作原理和技术支持数据导出、BI报表之类的相似,差异较大的地方是导入和导出数据量区别,一般报表数据量不会超过几百万,而做数据迁移,如果是互联网企业经常会涉及到千万级、亿级以上的数据量。...
  • Core Data的数据迁移

    千次阅读 2014-11-14 10:26:49
    Core Data版本迁移基础 ...通常,在使用Core Data的iOS App上,不同版本上的数据模型变更引发的数据迁移都是由Core Data来负责完成的。...这种数据迁移模式称为Lightweight Migration(可能对于开发人员来说是lig
  • elasticsearch数据迁移备份还原

    千次阅读 2019-05-19 15:41:30
    需求二:elasticsearch5.2中的数据迁移到elasticsearch6.5.4中 方案:采用repository-hdfs插件进行数据迁移备份和还原 疑问一 elasticsearch本来分布式有副本为什么要备份数据?? 任何一个存储数据的软件,都...
  • 数据迁移实施方案

    万次阅读 多人点赞 2017-09-03 19:10:27
    最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都是一些理论指导,没有讲到具体的如何去做的方法,...
  •   由于此时的数据迁移不仅仅是由一个数据库迁移到另一个相同数据库类型的另一个数据库,而是由SQLServer迁移到PostgreSQL中(数据库不同源)。此时我们首先面临的是数据库不同所带来的表结构语句差异问题。  ...
  • 文章目录前言HDFS元数据快速膨胀带来的性能瓶颈问题超大规模数据迁移所面临的挑战和困难DistCp的全面优化提升 前言 前面时间笔者曾写过一篇关于利用HDFS fastcopy功能来加速DistCp数据拷贝效率的文章(Distcp结合...
  • Atlassian data migrate 数据迁移

    千次阅读 2016-03-22 04:05:31
    Atlassian data-migration 数据迁移 數據遷移在 Atlassian 的用戶來看,都是讓人覺得充滿風險及工程艰巨的任務,但其實這個工作,在運維期間的各種場景會發現,數據遷移其實是一個很需要時常被執行的例行任務。
  • 数据表迁移数据一致验证

    千次阅读 2019-10-09 07:44:22
    http://www.cnblogs.com/iforever/p/4455715.html 转载于:https://www.cnblogs.com/Lomio/p/6132857.html
  • K8S数据迁移方法

    千次阅读 2019-11-29 15:13:49
    我们同样也需要改变现代应用程序存储数据的方式。企业越来越多地依赖数字服务来接触客户,传统企业正在Kubernetes上重新部署它们的IT应用和服务。容器的可移植和Kubernetes自动化的好处意味着在整个IT开发/测试和...
  • HBase数据迁移实战

    千次阅读 2018-07-18 16:31:18
    最近为产品做了一次HBase的数据迁移操作,学习了一些相关的技术和实现方案。现整理出来,作为今后HBase数据迁移的参考。如有纰漏,欢迎指正。 1. 前期准备 1.1 确认集群使用的版本  源HBase集群(以下称旧集群)...
  • LNMP中MYSQL数据迁移

    千次阅读 2015-09-07 09:46:15
    根据实际的业务需要,比如服务器存储空间不够等等,要增加新的存储空间,这就需要对现有mysql的数据进行迁移,来迁移到新的目录中,以下是操作步骤(根据imooc课程ubuntu下搭建lamp) 1.首先停止mysql服务 sudo ...
  • 第一步,打开冰箱门第二步,把大象放进冰箱第三步,关上冰箱门把100PB 115科技的数据迁移到阿里云,需要几步?同样是三步。第一步,把数据拷入闪电立方第二步,把闪电立方运送到阿里数据中心第三步,把数据从闪电...
  • 不停服! 怎么迁移数据

    万次阅读 2019-10-27 17:37:11
    数据迁移时, 为了保证数据的一致, 往往伴随着停服, 此期间无法给用户提供服务或只能提供部分服务. 同时, 为了确保迁移后业务及数据的正确, 迁移后测试工作也要占用不少时间. 如此造成的损失是比较大的. 接下来, ...
  • 数据迁移相关知识

    千次阅读 2005-03-03 17:44:00
    数据迁移的概念 原有的旧系统从启用到被新系统取代,在其使用期间往往积累了大量珍贵的历史数据,其中许多历史数据都是新系统顺利启用所必须的。另外,这些历史数据也是进行决策分析的重要依据。数据迁移,就是将...
  • 新旧系统更替产生的数据迁移问题

    千次阅读 2014-12-29 15:44:56
    新旧系统更替产生的数据迁移问题 作者:西安项目组夏凯撰文时间:2004.11.08 在信息化建设过程中,随着技术的发展,原有的信息系统不断被功能更强大的新系统所取代。从两层结构到三层结构,从Client/Server到...
  • Mycat生产实践---数据迁移与扩容实践

    万次阅读 2017-04-04 11:02:49
    1 离线扩容缩容工具目前从mycat1.6开始支持...3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复 二、扩容缩容步骤 1、复制schema.xml、rule.xml并重命名为newSchema.xml、newRule.xml放于conf目录下
  • HBase 四种数据迁移方案

    千次阅读 2020-08-15 20:30:00
    本文原文:http://ballwql.cnblogs.com/一、前言HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类:图1.HBase数据迁移方案从上面图中可...
  • 数据迁移:在新旧系统中切换

    千次阅读 2014-01-22 22:13:11
    在新旧系统的切换过程中,必然要面临一个数据迁移的问题。  数据迁移的概念  原有的旧系统从启用到被新系统取代,在其使用期间往往积累了大量珍贵的历史数据,其中许多历史数据都是新系统顺利启用所必须的。另外...
  • 如何不停服迁移数据

    千次阅读 2019-11-01 08:20:00
    数据迁移案例分析文章地址:https://blog.piaoruiqing.com/blog/2019/10/27/不停服怎么迁移数据/前言数据迁移时, 为了保证数据的...
  • 前言在当今每日信息量巨大的社会中,源源不断的数据需要被安全的存储.等到数据的规模越来越大的时候,也许瓶颈就来了,没有存储空间了.这时候怎么办,你也许会说,加机器解决,显然这是一个很简单直接但是又显得有些欠缺...
  • 邮箱数据协议迁移方案 功能简介 网易企业邮箱提供邮件系统搬迁功能,给予刚开始启用网易企业邮箱的客户,用于完整地搬迁企业原邮件系统的邮箱帐号、密码以及邮箱里的所有邮件,让企业客户可以更快捷、更轻松地完成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,918
精华内容 37,567
关键字:

数据迁移数据完整性