Ora2Pg 24.0 已发布

发布于 2023-07-12 作者:Gilles Darold
相关开源

加拿大蒙特利尔 - 2023年7月5日

Ora2Pg

Ora2Pg 24.0 版本,一个免费且可靠的用于将 Oracle 数据库迁移到 PostgreSQL 的工具,已正式发布并公开提供下载。

此主要版本增加了对将 SQL Server 数据库迁移到 PostgreSQL 的官方支持。它还修复了过去几个月报告的一些问题,并添加了一些新功能和改进。

  • 将 SQL Server 迁移添加到 Ora2Pg。支持大多数 SQL Server 对象以及数据导出。由于 TSQL 中缺少语句分隔符,将 TSQL 存储过程转换为 plpgsql 非常复杂,但像往常一样,Ora2Pg 正在尽最大努力完成尽可能多的工作。也可以使用 SQL Server 数据库进行迁移评估。ora2pg.conf 中添加了一些专用的配置指令。
  • 允许将 ALLOW/EXCLUDE 指令与 SHOW_* 报告一起使用,如果设置了 ALLOW/EXCLUDE 中的全局过滤器,则抛出致命错误。
  • 添加了将 DBMS_LOCK.SLEEP 替换为 pg_sleep 的功能。
  • 按函数/过程/和包函数拆分估计成本详细信息。
  • 将 cmin、cmax、ctid 添加到保留关键字列表中。
  • 为 PLSQL 代码中 ADD CONSTRAINT 的存在添加成本。它需要约束名称的稳定性。
  • 允许 COPYTABLE 导出类型使用 NULLIF 构造。
  • 添加新的 SEQUENCE_VALUES 导出类型,以导出 DDL,以从当前 Oracle 数据库的最后一个值设置序列的最后一个值,如下所示的语句:ALTER SEQUENCE departments_seq START WITH 290;
  • 添加将 Oracle 变量 : varname 替换为 PG :'varname' 的功能。
  • 添加对 MySQL PARTITION BY KEY() 的支持,并将其转换为使用表的 PK/UK 定义或 KEY() 子句中指定的列的 HASH 分区表。
  • 使 EXPORT_INVALID 配置指令与 TRIGGER 导出一起使用。到目前为止,未禁用的触发器未导出,将 EXPORT_INVALID 设置为 1 将强制导出禁用的触发器。
  • 添加对 MySQL 生成的更新时默认值的支持。例如:CREATE TABLE t1 ( dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); Ora2Pg 会将此语法转换为表上的触发器,以强制更新事件时列的值。
  • 添加将 ST_GEOMETRY 数据类型转换为 PostGis 几何数据类型的功能。
  • 将目标列表中的 ROWNUM 替换为 row_number() over () 子句。

新的配置指令

  • 添加 CLOB_AS_BLOB 配置指令,以便在导出数据时将 CLOB 视为 BLOB。启用后,Ora2Pg 将对 CLOB 应用与 BLOB 相同的行为和 BLOB_LIMIT 设置。如果您有大型 CLOB 数据,这将很有用。默认启用。
  • 添加配置指令 ST_GEOMETRYTYPE_FUNCTION,以便能够设置用于从 ST_Geometry 列中提取几何类型的函数。默认值:ST_GeometryType,例如,对于 ArcSDE,应将其设置为 sde.ST_GeometryType。
  • 添加四个新的配置指令,以便能够更改或前缀用于从 ST_Geometry 对象和值中提取信息的函数。
    • ST_SRID_FUNCTION:用于从 ST_Geometry 元信息中提取 srid 的 Oracle 函数。默认值:ST_SRID,例如,对于 ArcSDE,应将其设置为 sde.st_srid。
    • ST_DIMENSION_FUNCTION:用于从 ST_Geometry 元信息中提取维度的 Oracle 函数。默认值:ST_DIMENSION,例如,对于 ArcSDE,应将其设置为 sde.st_dimention。
    • ST_ASBINARY_FUNCTION:用于将 ST_Geometry 值转换为 WKB 格式的 Oracle 函数。默认值:ST_ASBINARY,例如,对于 ArcSDE,应将其设置为 sde.st_asbinary。
    • ST_ASTEXT_FUNCTION:用于将 ST_Geometry 值转换为 WKT 格式的 Oracle 函数。默认值:ST_ASTEXT,例如,对于 ArcSDE,应将其设置为 sde.st_astext。
  • 添加 INSERT_ON_CONFLICT 配置指令。启用后,这将指示 Ora2Pg 将 ON CONFLICT DO NOTHING 子句添加到为此类型数据导出的所有 INSERT 语句中。

向后兼容性

  • 更改 CASE_INSENSITIVE_SEARCH 的行为,以允许使用排序规则而不是 citext 扩展。要禁用该功能,可以使用值 none。如果迁移不是 MSSQL,则禁用此功能。
  • 删除 PREFIX_PARTITION 配置指令,现在已由 RENAME_PARTITION 指令替换。先前的行为是从表名、分区名称和子分区名称(如果有)构造分区名称。问题是,我们经常达到对象名称的最大长度,这会导致重复的分区名称。现在,当启用 RENAME_PARTITION 时,分区表将按照以下规则重命名:<tablename>_part<pos>,其中“pos”是分区号。对于子分区,这是:<tablename>_part<pos>_subpart<pos> 如果这是分区/子分区的默认值:<tablename>_part_default <tablename>_part<pos>_subpart_default 此更改将破坏向后兼容性,如果仍设置 PREFIX_PARTITION,它将简单地启用 RENAME_PARTITION
  • 当序列循环且 START 值高于 MAXVALUE 时,将 START 值设置为 MINVALUE

有关完整的更改列表,请参见 https://github.com/darold/ora2pg/blob/master/changelog

链接 & 致谢

我要感谢所有提交补丁的用户以及报告错误和功能请求的用户,他们都在更改日志文件中被引用。

Ora2Pg 是一个开放项目。欢迎您为构建更好的工具做出任何贡献。您只需使用 GitHub 工具或直接发送至 ora2pg@darold.net 来发送您的想法、功能请求或补丁。

链接


关于 Ora2Pg :

Ora2Pg 是一个简单且可靠的工具,用于从 Oracle 迁移到 PostgreSQL。它自 2001 年开始开发,可以将大多数 Oracle 对象导出为与 PostgreSQL 兼容的代码。

Ora2Pg 可在任何平台上运行,并根据 GPL v3 许可提供。

文档、下载和支持请访问 http://www.ora2pg.com/