欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记录一次迁移达梦数据库(二)

程序员文章站 2022-06-03 11:51:02
...

前言

在上篇文章中,按照文档里面的配置和迁移过程操作了一遍,和自己设想的一样,接下来的过程并不顺利。接下来,就将自己的采坑过程做个简单的汇总。

安装篇

硬件条件

按照文档所写https://eco.dameng.com/docs/zh-cn/start/install-dm-windows-prepare.html,下载的达梦数据库要与操作系统所匹配,同时预留1GB的内存即可

安装步骤

https://eco.dameng.com/docs/zh-cn/start/dm-install-windows.html傻瓜教程一步步来即可

配置实例

https://eco.dameng.com/docs/zh-cn/start/dm-instance-windows.html

其它

因为公司运维已经安装好了linux版本的达梦数据库,个人主要安装windows版是为了使用其工具

导入数据

工具介绍

windows版本的迁移工具如下链接https://eco.dameng.com/docs/zh-cn/start/tool-dm-migrate.html,进行操作即可,友情提示:自己创建一个用户A,这样会生成一个同名称的A模式,将数据导入到A模式下,具体原因之后的文章会说,实际的生产环境,也大多不会使用SYSDBA用户及其默认模式。创建用户参考如下:https://eco.dameng.com/docs/zh-cn/start/dm-user-tablespace.html

MYSQL>DM

因为我们之前使用的MYSQL,所以迁移工作是从MYSQL迁移到DM,链接如下:
https://eco.dameng.com/docs/zh-cn/start/migrate-mysql-dm.html

兼容处理(随时更新)

  1. MYSQL字段类型为text的导入后变成CLOB,在使用JDBC读取的时候,需要将CLOB转为流读取出来,示例代码如下:
     private String clob2String(CLOB clob) {
        //Clob转换成String 的方法
        String content = null;
        StringBuffer stringBuf = new StringBuffer();
        try {
            int length = 0;
            Reader inStream = clob.getCharacterStream();
            //取得大字侧段对象数据输出流
            char[] buffer = new char[10];
            while ((length = inStream.read(buffer)) != -1) {
                for (int i = 0; i < length; i++) {
                    stringBuf.append(buffer[i]);
                }
            }

            inStream.close();
            content = stringBuf.toString();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return content;
    }
  1. 达梦在初始化实例的时候设置参数LENGTH_IN_CHAR=0(varchar字节为单位)。Utf-8一个汉字占用三个字节,所有中午符号均占三个字节、一个英文占用一个字节。varchar以字节为单位。一个varchar等于一个字节。