背景与展望:

比如:公司要上市往往会要求提供过去几年的营业数据和报表等信息,

而这些信息来源于正在一直运营使用的ERP和财务系统是最可靠与真实的。

NetSuite实现的ERP和财务系统的完美结合,随着多年的经营积累和业务流程升级,

NetSuite系统会不断改造和适应新的企业流程和应用。

其中免不了切换新的NetSuite系统,或者International到OneWorld版本的升级等等。

那现存多年的业务数据如何保存?

笔者今年做的一个项目就是设计和实施一整套:

从一个NetSuite的Transaction和Non-Transaction数据迁移到另外一个新NetSuite的Record Type和Non-Transaction记录中。

成功迁移的数据记录超过4百多万条。

设计思想:

将Transaction以Transaction Body和Transaction Line(两个父子关系的自定义记录类型)的形式重现到新的NetSuite系统中。

’历史数据加载器‘设计包含:

Step 1 – 分析原始NetSuite A中的事务处理数据然后存储到两个自定义记录中

Analyze the Transactions of the Source Instance and Store Results in Two Custom Records

  根据定义要迁移的Transaction Type(比如:sales order,purchase order, invoice,credit memo,vendorbill, payment。。。);自动分析现有Transaction,提取所有的系统字段和自定字段。

Step 2 – 拷贝这两个分析得出结果记录到目标NetSuite B的相应自定义记录中(用CSV向导)

Copy the data of these two Custom Records to the Destination Instance

  根据分析得出的要迁徙的具体字段信息(可能通用于不同的Transaction类型),把原始NetSuite A中的数据导出,生成一个个CSV文件,其中的具体要求比如:单个文件大小不许超过5MB,单个的行数不许超过20000行;这些基础的设置在Schedule Script中进行定义。

Step 3 – 动态生成事务处理数据的两个自定义记录表,该自定义记录将用于存储所有的历史数据

Automatically Create the Two New Custom Records which will store All the Transactional Data of the Source System

  根据分析得出的具体字段信息,动态生成Transaction Body和Transaction Line这两个Record Type; 用途:用于在目标NetSuite B中存储具体每一个个的Transaction数据。

Step 4 – 拷贝传输原始NetSuite A的数据到目标NetSuite B中

Copy the data from the Source Instance to the Destination Instance

  使用NetSuite的CSV导入功能,用’历史数据加载器‘的代码功能动态加载原始NetSuite A中Filecabinet的数据,然后POST到目标NetSuite B的CSV IMPORT queue。

Step 5 – 在目标NetSuite B中给不用的事务处理类型自定义记录的表格,并关联到现有的客户和供应商记录上。

Create a Custom Form for Each “Record Type” that Migrated from the Source System to the Destination System.

  美化导入的数据Form格式,并且关联到Customer,Vendor等等记录上,这样实现了,比如:从目标NetSuite B的Customer SubTab中查看过去几年的交易数据。

精彩截图:

这个处理遗失(未迁移)数据的思路非常新奇,这里要非常感谢我神奇的同事提供的思路。

1.导出两个系统中的Transaction Internal ID

2.导入百万条的数据到SQL Server的数据表中

3. 用SQL 语句查询到未迁徙的数据列表;

4.导入到原始NetSuite A中标记那些没有成功迁移的Transaction

5.运行’历史数据加载器‘针对与这样的Saved Search,迁移这类数据。

总结:

本文仅供对该’历史数据加载器‘的总体浏览,不涉及具体的技术细节讨论。

这个’历史数据加载器‘做成的bundle可以迁移任意两个NetSuite系统中的数据,

功能灵活强大,适用与百万条以上的历史数据迁移。

Hope it helps,

Have a good day :)

两个NetSuite之间历史交易数据迁移的具体方案的更多相关文章

  1. 两个Fragment之间如何传递数据

    FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? Fragment之间不能直接通信,必须通过Activit ...

  2. oracle数据向历史表数据迁移————procedure

    create or replace procedure remove_refund_his_pro isbegin declare cursor refund_query_cur is select ...

  3. 018、MySQL取满足日期在两个日期之间的所有数据

    #查询 SELECT GZJK_CREATEDATE FROM abc_table WHERE ( ( GZJK_CREATEDATE >= UNIX_TIMESTAMP( '2019-08-0 ...

  4. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

    作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...

  5. DB 分库分表(5):一种支持自由规划无须数据迁移和修改路由代码的 Sharding 扩容方案

    作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...

  6. kafka数据迁移实践

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:mikealzhou 本文重点介绍kafka的两类常见数据迁移方式:1.broker内部不同数据盘之间的分区数据迁移:2.不同broker ...

  7. 阿里云 RDS实例间的数据迁移

    使用数据传输DTS可以实现两个RDS实例间的数据迁移.对于支持增量迁移的存储引擎,还可以使用DTS在源RDS实例不停服的情况下,将数据迁移到目标RDS实例.目前对于RDS不同存储引擎,只支持同构迁移( ...

  8. WEB安全新玩法 [3] 防护交易数据篡改

    在任何涉及交易的系统中,客户与商家之间的交易数据具有核心作用,如购买商品的价格.数量.型号和优惠券等.在客户挑选商品的过程中,这些交易数据逐渐形成:待客户提交订单时,交易数据被商家接收,形成双方认可的 ...

  9. 用sql从一张表更新数据到另外一张表(多表数据迁移)

    update TBL_1 A, TBL_2 B, TBL_3 Cset a.email=c.email_addrwhere a.user_id=b.user_id and b.un_id=c.un_i ...

随机推荐

  1. Windows 下TortoiseGit 设置避免每次登录帐号密码

    TortoiseGit ->Settings 1.选择设置的git目录 2.输入登录帐号与email 3.点击Edit global.gitconfig 编辑,将文本 [credential] ...

  2. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  3. WordPress基础:订阅源rss的使用

    设置->阅读,可设置rss显示效果 RSS源为:http://wordpress目录/feed 把这个地址放入你的rss阅读器进行订阅即可,最简单的就是使用QQ邮箱里面的阅读空间进行订阅.

  4. JMeter学习-033-JMeter BeanShell 脚本应用实例之参数变量修改

    BeanShell脚本是JMeter自动化测试过程中不可或缺的提升技能之一,BeanShell脚本编写类似于Java脚本.它可以获取.修改系统定义或用户定义的变量值,同时也可以进行一些相应的测试数据处 ...

  5. DWR实现后台推送消息到web页面

    DWR简介 DWR(Direct Web Remoting)可用于实现javascript直接调用java函数和后台直接调用页面javascript代码,后者可用作服务端推送消息到Web前端. (服务 ...

  6. Android 自定义spinner下拉框实现

    一:前言本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去网 ...

  7. 后移动互联网时代:到底还要不要开发一个App?

    后移动互联网时代,到底是什么样的一个时代? 首先,后移动互联网时代中,产生头部应用的几率变小了,像微信这样巨头式的App很难在产生第二个.其次,后移动互联网时代,物联网发展迅速,所有的智能硬件都需要一 ...

  8. ASP.NET MVC location.href不跳转

    表单使用submit导致不跳转 <button type="button">

  9. [CC]点云密度计算

    包括两种计算方法:精确计算和近似计算(思考:local density=单位面积的点数 vs  local density =1/单个点所占的面积) 每种方法可以实现三种模式的点云密度计算,CC里面的 ...

  10. SCRUM 流程的步骤2: Spring 计划

    1. product backlog. 2. 把故事进一步拆分成任务.   5. 形成Sprint backlog. Scrum master隆重登场,组织大家按照SCRUM流程,步步为营顺利开展工作 ...