情形
今天在工作中,想要把服务器端的达梦数据库里的数据迁移到本地中来,听前辈说如果想直接迁移需要堡垒机。但当时用不了堡垒机,所以我就想使用达梦数据库中自带的DM数据迁移工具,通过DM -> SQL文件,SQL文件-> DM的方式,通过SQL作为中转来完成数据库的迁移。
问题
将服务端的DM数据库转换为SQL文件是很顺利的,但再把SQL迁移到本地DM数据库中却发生了一个问题,那就是语法分析错误。
错误指示可以说是没有任何帮助。
原因及解决办法
数据库中有一种数据类型叫BLOB,如果你遇到了和我同样的问题,请找到这一字段,然后把带有这些字段的插入指令中blob的字段数值全部改为to_blob(“x”)。
例如某一字段是blob类型的,名字叫BLOB_COLUMN,本来要插入的是0x,那么不报错的插入语法是:INSERT “TABLE_NAME”.“BLOB_COLUMN” VALUES(to_blob(“0”));
总结
因为我们工作的数据库里只有五条这样的信息,因此改起来比较方便,如果blob字段较多的情况下可能会变得很麻烦。这个工具问题应该会在后续版本中得到改善。
2021-7-29更新
这一问题应该只出现在低版本的DM数据迁移工具中(如DM7),在新的8.1版本中已经解决了这一问题。