zoukankan      html  css  js  c++  java
  • 用perl做数据库迁移,从MSSQL到MYSQL()大概思路

    最近手上有一项目,需要把数据库从SQL SERVER切换到MySQL,其业务原因暂且不提。小弟拿到这一项目之后,头痛不已,因为项目中用到了SQL Server2008的一些新的数据类型,包括Geometry,包括hierarchyid(级联ID)这类SQL Server新的数据类型。当然,MySQL自V5之后,支持Geometry但还不支持基于Geometry的运算,因此在做数据迁移的时候,此方面必须要有所考虑。当然,这是后话,先不管三七二十一,先把数据全部导到MySQL之中再说。

    在做前期技术选型的时候,我想过用ETL工具,而且手上也有好几个用得比较熟悉的ETL工具,但,一想到要拖拖拉拉建模,而且表那么多(本次初步估了一下,涉及到差不多500多张表...),像hierarchyid这种字段,在转换的时候,还得要在源数据上做转换,头昏,脑涨,奶酸,蛋痛等一切症状全上来了。前不久在某坛子上看到对Perl的介绍,外加掌握Perl会简化Linx的运维工作。于是摩拳擦掌准备用Perl来写一个导数据脚本。由于上弟在之前从没用Perl写过任何脚本,哪怕一行都木有,所以,迅速找到一本Perl的电子本【Perl语言入门  第五版】,人称“小骆驼”。

    废话不多说,先说一下,我对程序的大概的思路:

    先建数据表,在建表的时候,暂时不做太大的数据字段上边的改多。(之前我还在想,直接把级联ID自动拆分为2个字段,ID与ParentID,但在第一轮测试的过程中,发现因为级联ID被用作了外键,在做转换的时候,会出现字段重复啊,冲突啊神马的东西,而且,这种外键也不是很好自动关联,只好放弃。)

    再导数据,用最简单的方法先导出来,从SQL SERVER中查出来,插入到MYSQL就完事。但在这里我做了一个测试,如果把一整张表放到内存中,服务器基本不用干其它事了。于是我在这里把一张数据表拆分了,每次导2000条。。。

    最后再查出使用过级联ID(hierarchyid)的字段,再写脚本处理这些表的字段。

  • 相关阅读:
    pyspider 爬虫教程(一):HTML 和 CSS 选择器
    EF异常:对一个或多个实体的验证失败
    通过Excel生成PowerDesigner表结构设计
    C#几种常用的加密方式
    在powerdesigner中创建物理数据模型
    powerdesigner逆向工程,从数据库导出PDM
    PowerDesigner怎样才能在修改表的字段Name的时候Code不自动跟着变
    如何查看用pip命令安装的软件的安装路径
    ckeditor编辑的使用方法
    【转】[慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定
  • 原文地址:https://www.cnblogs.com/davyfamer/p/2531822.html
Copyright © 2011-2022 走看看