DB2 V11.1远程导出REAL类型数据至DEL文件丢失精度如何解决
DB2导出DEL文件丢失REAL类型精度的解决方案
出现精度丢失的核心原因是DB2对REAL、DOUBLE这类浮点类型的默认DEL导出规则限制:默认仅输出6位有效数字,REAL类型本身支持7位有效数字,所以尾部三位会被截断。
你可以选择以下任意一种方案解决:
方案一:导出时显式转换字段格式(推荐)
在导出的SELECT语句中使用TO_CHAR函数指定浮点字段的输出格式,主动保留全部有效位,REAL类型指定7位有效数字即可,示例导出语句如下:
db2 export to $path/filename.del of del select c_double, TO_CHAR(c_real, '9.999999EEEE') as c_real from TEST_REAL
该方案兼容性最强,不受客户端环境配置影响,适合跨环境导出、导出数据需要给其他系统使用的场景。
方案二:修改DB2客户端全局配置
调整DB2客户端的注册表变量,修改全局浮点输出规则,让所有浮点类型导出时都输出全部有效数字:
- 断开当前所有DB2连接,终止客户端进程:
db2 terminate
- 设置浮点输出规则变量:
db2set DB2_FLT_OUTPUT=2
- 重启DB2客户端实例让配置生效:
db2stop db2start
配置完成后执行原有导出语句即可保留全部精度。
注意:该方案会影响当前客户端实例下所有浮点类型的输出行为,若仅单场景需要保留精度优先选择方案一。
内容的提问来源于stack exchange,提问作者lht
相关产品推荐
相关产品推荐

