SqlServer 迁移到达梦数据库 nvarcher 的避坑指南

0x01 SqlServer 生产环境的做法

在SqlServer中,通常用 nvarchar 来存储字符串类型的数据,我们生产环境大量使用该类型,数据长度一般为 nvarchar(255) 、nvarchar(2000)、nvarchar(4000)、nvarchar(max)。

其中,nvarchar(1) 可以存储:一个汉字或者一个字母。

0x02 达梦数据库中需要怎么存

达梦数据库中,在数据库安装时需要关注字符集,重点关注两种类型:GBK 和 UTF8,正确的选择关系到你后面数据是否能存下的问题。敲重点。

就数据类型而已,达梦这边主要用 varchar 和 text 类存储字符串,其中 varchar 最大能存 8188个字符,text 则能存2G的数据。

GBK 中 varchar 类型,一个汉字要占用2个字符,字母和数字占用1个字符。
UTF8 中 varchar 类型,一个汉字要占用3个字符,字母和数字占用1个字符。

这意味着,SqlServer 中原来的 nvarchar(4000) 类型转到达梦。

在 GBK 中,你要用 varchar(8000) 才能存下。
而 UTF8 中,你则需要 text 才能存下,要注意 text 虽然能存下,他是clob类型的,程序中要对应处理。

当然,还有一个要注意的问题,你在达梦需要“开启超长记录”,否则一个 nvarchar(4000) 就把一行记录的存储空间用完了。像我们业务中 SqlServer 大量的单表几百个字段根本没法玩。

0x03 小结

  1. 达梦中如无必要,请选择GBK的编码,同样的varchar能存更多中文字符。
  2. 字段多了请开启超长记录,否则一个字段用完了一行的空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值