Конвертация DDL Oracle в Postgres

У меня есть очень большой сценарий DDL в Oracle нашего существующего приложения, он не имеет хранимых процедур. Просто таблицы, последовательности и ограничения.

Каков наилучший способ конвертировать его в Postgres?

Некоторые люди говорят, что лучше делать это вручную, а некоторые говорят, что для этого есть бесплатные инструменты. Может кто-нибудь предложить мне лучший способ сделать это?

Если это от руки, пожалуйста, предложите мне, какие изменения должны быть сделаны.

Пример Oracle DDL приведен ниже. Пожалуйста, сообщите об изменениях, которые необходимо внести при конвертации в Postgres для приведенного ниже DDL.

-  DDL for Table ACTOR_ROLE_INFO
--------------------------------------------------------

  CREATE TABLE "PAYTM_RELEASE1"."ACTOR_ROLE_INFO" 
   (    "ACTOR_ROLE_ID" NUMBER, 
    "ACTOR_ID" NUMBER, 
    "ROLE_ID" NUMBER, 
    "STATUS" NUMBER, 
    "CREATED_BY" NUMBER, 
    "CREATED_ON" TIMESTAMP (6) WITH TIME ZONE, 
    "MODIFIED_BY" NUMBER, 
    "MODIFIED_ON" TIMESTAMP (6) WITH TIME ZONE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  DDL for Table ACTOR_TYPES
--------------------------------------------------------

  CREATE TABLE "PAYTM_RELEASE1"."ACTOR_TYPES" 
   (    "ACTOR_TYPE_ID" NUMBER, 
    "ACTOR_TYPE" VARCHAR2(100 BYTE), 
    "ACTOR_DESCRIPTION" VARCHAR2(100 BYTE), 
    "CREATED_BY" NUMBER, 
    "CREATED_DATE" TIMESTAMP (6) WITH TIME ZONE, 
    "MODIFIED_BY" NUMBER, 
    "MODIFIED_DATE" TIMESTAMP (6) WITH TIME ZONE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;

1 ответ

Решение

Используйте Ora2PG http://sourceforge.net/projects/ora2pg/ чтобы начать, но не используйте полученную схему вслепую. Как предложил Крейг, взгляните на типы данных. Простое преобразование NUMBER в NUMERIC приводит к значительному увеличению занимаемой площади на диске. Это также приводит к гораздо большему размеру индекса, что замедляет работу всего приложения. Ваша результирующая схема не должна содержать числовых столбцов, если только вашему приложению действительно не нужна аббревиатура, и она должна быть исключением, а не правилом.

Другие вопросы по тегам