迁移达梦数据库(二)
前言
在上篇文章中,按照文档里面的配置和迁移过程操作了一遍,和自己设想的一样,接下来的过程并不顺利。接下来,就将自己的采坑过程做个简单的汇总。
安装篇
硬件条件
按照文档所写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
兼容处理(随时更新)
- 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;
}
- 达梦在初始化实例的时候设置参数LENGTH_IN_CHAR=0(varchar字节为单位)。Utf-8一个汉字占用三个字节,所有中午符号均占三个字节、一个英文占用一个字节。varchar以字节为单位。一个varchar等于一个字节。