用于 EBCDIC 和其他大型机迁移的 RDS for PostgreSQL 排序规则
RDS for PostgreSQL 版本 10 及更高版本包括 ICU 版本 60.2,该版本基于 Unicode 10.0,并包括来自 Unicode 通用区域设置数据存储库 CLDR 32 的排序规则。这些软件国际化库确保字符编码以一致的方式呈现,无论操作系统或平台如何。有关 Unicode CLDR-32 的更多信息,请参阅 Unicode CLDR 网站上的 CLDR 32 版本注释
从版本 14.3 开始,RDS for PostgreSQL 还包括排序规则,这些排序规则有助于从基于 EBCDIC 的系统进行数据集成和转换。扩展二进制编码的十进制交换码或 EBCDIC 编码通常由大型机操作系统使用。这些 Amazon RDS 提供的排序规则的定义非常狭窄,仅对那些直接映射到 EBCDIC 代码页的 Unicode 字符进行排序。字符按 EBCDIC 代码点顺序排序,以便在转换后进行数据验证。这些排序规则不包括非规范化表单,也不包含不直接映射到源 EBCDIC 代码页上字符的 Unicode 字符。
EBCDIC 代码页和 Unicode 代码点之间的字符映射基于 IBM 发布的表。可以从 IBM 下载整套的压缩文件
-
Unicode to EBCDIC collations table – 一些大型机数据迁移工具在内部使用 LATIN1 或 LATIN9 来编码和处理数据。此类工具使用往返操作方案来保持数据完整性并支持反向转换。使用 LATIN1 编码处理数据(这种编码不需要特殊处理)的工具可以使用此表中的排序规则。
-
Unicode to LATIN9 collations table – 您可以在任何 RDS for PostgreSQL 数据库中使用这些排序规则。
在下表中,您可以找到 RDS for PostgreSQL 中可用的排序规则,这些排序规则将 EBCDIC 代码页映射到 Unicode 代码点。我们建议您将此表中的排序规则用于需要根据 IBM 代码页的顺序进行排序的应用程序开发。
PostgreSQL 排序规则名称 | 代码页映射和排序顺序的描述 |
---|---|
da-DK-cp277-x-icu |
直接映射到 IBM EBCDIC 代码页 277(每个转换表)的 Unicode 字符按 IBM CP 277 代码点顺序排序 |
de-DE-cp273-x-icu |
直接映射到 IBM EBCDIC 代码页 273(每个转换表)的 Unicode 字符按 IBM CP 273 代码点顺序排序 |
en-GB-cp285-x-icu |
直接映射到 IBM EBCDIC 代码页 285(每个转换表)的 Unicode 字符按 IBM CP 285 代码点顺序排序 |
en-US-cp037-x-icu |
直接映射到 IBM EBCDIC 代码页 037(每个转换表)的 Unicode 字符按 IBM CP 37 代码点顺序排序 |
es-ES-cp284-x-icu |
直接映射到 IBM EBCDIC 代码页 284(每个转换表)的 Unicode 字符按 IBM CP 284 代码点顺序排序 |
fi-FI-cp278-x-icu |
直接映射到 IBM EBCDIC 代码页 278(每个转换表)的 Unicode 字符按 IBM CP 278 代码点顺序排序 |
fr-FR-cp297-x-icu |
直接映射到 IBM EBCDIC 代码页 297(每个转换表)的 Unicode 字符按 IBM CP 297 代码点顺序排序 |
it-IT-cp280-x-icu |
直接映射到 IBM EBCDIC 代码页 280(每个转换表)的 Unicode 字符按 IBM CP 280 代码点顺序排序 |
nl-BE-cp500-x-icu |
直接映射到 IBM EBCDIC 代码页 500(每个转换表)的 Unicode 字符按 IBM CP 500 代码点顺序排序 |
Amazon RDS 提供了一组额外的排序规则,这些排序规则使用 IBM 发布的表,按源数据的 EBCDIC 代码页的原始代码点顺序,对映射到 LATIN9 字符的 Unicode 代码点进行排序。
PostgreSQL 排序规则名称 | 代码页映射和排序顺序的描述 |
---|---|
da-DK-cp1142m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1142(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1142 代码点顺序排序 |
de-DE-cp1141m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1141(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1141 代码点顺序排序 |
en-GB-cp1146m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1146(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1146 代码点顺序排序 |
en-US-cp1140m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1140(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1140 代码点顺序排序 |
es-ES-cp1145m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1145(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1145 代码点顺序排序 |
fi-FI-cp1143m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1143(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1143 代码点顺序排序 |
fr-FR-cp1147m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1147(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1147 代码点顺序排序 |
it-IT-cp1144m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1144(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1144 代码点顺序排序 |
nl-BE-cp1148m-x-icu |
映射到最初从 IBM EBCDIC 代码页 1148(每个转换表)转换而来的 LATIN9 字符的 Unicode 字符按 IBM CP 1148 代码点顺序排序 |
在下文中,您可以找到使用 RDS for PostgreSQL 排序规则的示例。
db1=>
SELECT pg_import_system_collations('pg_catalog');pg_import_system_collations ----------------------------- 36
db1=>
SELECT '¤' < 'a' col1;col1 ------ t
db1=>
SELECT '¤' < 'a' COLLATE "da-DK-cp277-x-icu" col1;col1 ------ f
我们建议您将 Unicode to EBCDIC collations table和 Unicode to LATIN9 collations table中的排序规则用于需要根据 IBM 代码页的顺序进行排序的应用程序开发。以下排序规则(后缀为字母“b”)在 pg_collation
中也可见,但供 Amazon 中的大型机数据集成和迁移工具使用,这些工具将代码页映射到特定的代码点偏移,并要求在排序规则中进行特殊处理。换句话说,不建议使用以下排序规则。
-
da-DK-277b-x-icu
-
da-DK-1142b-x-icu
-
de-DE-cp273b-x-icu
-
de-DE-cp1141b-x-icu
-
en-GB-cp1146b-x-icu
-
en-GB-cp285b-x-icu
-
en-US-cp037b-x-icu
-
en-US-cp1140b-x-icu
-
es-ES-cp1145b-x-icu
-
es-ES-cp284b-x-icu
-
fi-FI-cp1143b-x-icu
-
fr-FR-cp1147b-x-icu
-
fr-FR-cp297b-x-icu
-
it-IT-cp1144b-x-icu
-
it-IT-cp280b-x-icu
-
nl-BE-cp1148b-x-icu
-
nl-BE-cp500b-x-icu
要了解有关将应用程序从大型机环境迁移到 Amazon 的更多信息,请参阅什么是 Amazon Mainframe Modernization?
有关在 PostgreSQL 中管理排序规则的更多信息,请参阅 PostgreSQL 文档中的排序规则支持