【DM版本】:V8.1企业版 --03134284336-20250327-266591-20132 Pack12
【操作系统】:未知
【CPU】:未知
【实例和客户端字符集】:UTF8
【问题描述】*:用的是第三方提供的实例,所以只知道数据库版本,dimp和dexp用的是官网下的V8免费版安装的,版本是V8 03134284368-20250430-272000-20149 Pack1。
在同一个实例下导出导入,导出时无警告和报错,导入时部分表含中文数据的字段报6108字符串截断,数据无法导入。例如字段长度是varchar(50),有一条数据是25个中文字符,导出时无报错警告,导入时必须将字段长度改为75以上才可以导入,发现的现象如下:
dexp 导出:按照字段的字符长度导出数据(即 VARCHAR(50) 可以导出 50 个中文字符)
dimp 导入:按照字段的字节长度校验数据(LENGTH_IN_CHAR=0 时,VARCHAR(50) 只能存约 16 个 UTF-8 中文字符)
以下是我的导出导入命令,目前只能在导入失败后分析表中数据长度,将字段长度改大,再重新执行导入:
dexp
USERID='用户名/"密码"@ip:5236'
FILE=x.dmp
LOG=x.log
SCHEMAS=xxx
PARALLEL=8
COMPRESS=Y
COMPRESS_LEVEL=5
dimp
USERID='用户名/"密码"@ip:5236'
FILE=x.dmp
TABLE_EXISTS_ACTION=TRUNCATE
LOG=x.log
PARALLEL=8
COMMIT_ROWS=50000
在 AI 的建议下试过导入时加上IGNORE_INIT_PARA=2或3,结果依旧字符串截断
-- 查询页,换算为 KB 显示
SELECT SF_GET_PAGE_SIZE() / 1024 AS "页大小(KB)";
-- 查询簇大小(返回值单位:页,如 16 表示 1 簇包含 16 个数据页)
SELECT SF_GET_EXTENT_SIZE() AS "簇大小(页)";
页簇是一致吗,建议dm.ini也保持一致

建议在新环境创建扩大精度的表结构后,重新导入