【问题标题】:identify if oracle column data contains any unicode char beyond the range U+0000 and U+FFFF识别 oracle 列数据是否包含超出范围 U+0000 和 U+FFFF 的任何 unicode 字符
【发布时间】:2019-02-16 15:20:39
【问题描述】:

我正在尝试将 oracle 表迁移到 mysql,但我在目标端遇到了一些问题,因此我只能使用 utf-8,即 3 字节。

我想运行 sql 查询来确定是否有任何记录的 unicode char 超出 3 字节范围,即 U+0000 和 U+FFFF

以另一种方式。如何识别代码点值 U+10000 和 U+10FFFF 之间具有 unicode char 的表行?

【问题讨论】:

  • UTF-8 中的字符可以是 1 到 4 字节,而不是 3。我认为更好的选择是使用 utf8mb4 而不是 utf8,请参阅 stackoverflow.com/questions/30074492/…
  • oracle 到 mysql 的迁移不支持 aws 中的 utf8mb4。它是 DMS 的一个限制。因此使用 utf8mb3 选项进行探索

标签: mysql oracle unicode utf-8 migration


【解决方案1】:

MySQL 的CHARACTER SET utf8utf8mb3 相同。外界的UTF-8对应MySQL的utf8mb4。尝试使用utf8mb4

如果您必须找到输入的 4 字节 UTF-8 字符,请转换为 HEX 并搜索 F0 字符。由于我们不知道您的数据是什么样的,也不知道您可以使用哪些工具,所以我无法更具体。

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多