当前位置:网站首页 > SQL数据库编程 > 正文

sqlldr字符编码(sqlloader 字符集)



(1)UTF-32编码:最简单的编码,每个字符使用 32 位。

缺点:这样做最简单,因为一直以来,计算机将 32 位视为数字,而计算机最在行的就是处理数字。但问题是,这样太浪费空间了。

希望:UTF-8 可以节省空间,在 UTF-8 中,

①字符“C”只需要 8 位。

②一些不常用的字符,比如“”需要 32 位。

③其他的字符可能使用 16 位或 24 位。

(2)utf8编码:只能算是个专有的字符编码,只支持每个字符最多3个字节(24位)。

(3)utf8mb64编码:真正的实现UTF-8编码。 每个字符最多4个字节(32位)。能满足上述3条

第1步:创建备份

创建要升级的服务器上所有数据库的备份。 安全第一

第2步:升级MySQL服务器

将MySQL服务器升级到v5.5.3 +,或要求服务器管理员为您执行此操作

第3步:修改数据库,表和列

更改数据库,表和列的字符集和排序规则属性以使用utf8mb4而不是utf8。

由于utf8mb4完全向后兼容utf8,因此不应出现mojibake或其他形式的数据丢失。 (但你有备份,对吧?)

第4步:检查列和索引键的最大长度

这可能是整个升级过程中最乏味的部分。

从utf8转换为utf8mb4时,列或索引键的最大长度以字节为单位不变。因此,它在字符方面较小,因为字符的最大长度现在是四个字节而不是三个字节。

例如,TINYTEXT列最多可容纳255个字节,这与85个三字节或63个四字节字符相关。假设您有一个使用utf8的TINYTEXT列,但必须能够包含超过63个字符。鉴于此要求,您不能将此列转换为utf8mb4,除非您还将数据类型更改为更长的类型(如TEXT) - 因为如果您尝试使用四字节字符填充它,则只能将输入63个字符,但不能更多。

索引键也是如此。 InnoDB存储引擎的最大索引长度为767字节,因此对于utf8或utf8mb4列,最多可以索引255或191个字符。如果您当前的索引长度超过191个字符的utf8列,则在使用utf8mb4时需要索引较少数量的字符。 (因此,我不得不将一些索引的VARCHAR(255)列更改为VARCHAR(191)。)

“MySQL 5.5参考手册”的10.1.11节提供了更多相关信息。

步骤5:修改连接,客户端和服务器字符集

在应用程序代码中,将连接字符集设置为utf8mb4。这可以通过简单地用SET NAMES utf8mb4替换SET NAMES utf8的任何变体来完成。如果您的旧SET NAMES语句指定了排序规则,请确保也更改它,例如SET NAMES utf8 COLLATE utf8_unicode_ci变为SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci。

确保也设置客户端和服务器字符集。 我的MySQL配置文件(/etc/my.cnf)中有以下内容:

您可以轻松确认这些设置是否正常工作:

如您所见,所有相关选项都设置为utf8mb4,除了character_set_filesystem,它应该是二进制的,除非您在文件系统中支持文件名中的多字节UTF-8编码字符,而character_set_system总是utf8和 不能被覆盖。

注意:默认字符集和排序规则也可以在其他一些级别配置。

第6步:修复和优化所有表

升级MySQL服务器并进行上述必要的更改后,请确保修复和优化所有数据库和表。 升级后我没有立即执行此操作(我认为没有必要,因为乍一看似乎一切正常),并遇到一些奇怪的错误,其中UPDATE语句没有任何效果,即使没有 错误被抛出。

您可以为要修复和优化的每个表运行以下MySQL查询:

幸运的是,这可以使用命令行mysqlcheck实用程序一次完成:

这将提示输入root用户的密码,之后将修复和优化所有数据库中的所有表。

到此这篇sqlldr字符编码(sqlloader 字符集)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • mysql主键自增语句(mysql自增主键和uuid)2025-03-15 10:00:06
  • mysql主键自增语句(mysql主键自增2)2025-03-15 10:00:06
  • mysql主键和索引(mysql主键索引叶子结点)2025-03-15 10:00:06
  • 增删改查sql语句语法(增删改查对应的sql语法)2025-03-15 10:00:06
  • mysql主键重复会覆盖还是?(mysql主键重复怎么解决)2025-03-15 10:00:06
  • sql数据库文件在哪(sqlyog数据库文件存放在哪里)2025-03-15 10:00:06
  • sql中循环查询(sql循环查询客户存款的消耗)2025-03-15 10:00:06
  • pymysql怎么安装到spyder(怎么安装pymysql模块)2025-03-15 10:00:06
  • sqlldr导入定长文件(sqlldr只导入指定字段)2025-03-15 10:00:06
  • sql文件转csv文件(sql如何导出csv)2025-03-15 10:00:06
  • 全屏图片