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 小结
- 达梦中如无必要,请选择GBK的编码,同样的varchar能存更多中文字符。
- 字段多了请开启超长记录,否则一个字段用完了一行的空间。
本文探讨了从SqlServer迁移到达梦数据库时的字符串数据类型转换问题。在SqlServer中常用nvarchar存储字符串,而在达梦数据库中,推荐使用GBK编码的varchar以存储更多中文字符。由于GBK中varchar的最大存储容量,原本的nvarchar(4000)在GBK中需转换为varchar(8000),而在UTF8中则需使用text。同时,对于大量字段的表,需要开启达梦的“超长记录”功能,避免单个字段占用过多空间。总结来说,迁移时需考虑字符集选择和数据类型调整,以及是否启用超长记录功能。

被折叠的 条评论
为什么被折叠?



