2008-10-01 2 views

답변

3

http://ora2pg.darold.net/에서 사용할 수있는 도구가 있습니다.이 도구는 Oracle 스키마를 Postgres 스키마로 변환하는 데 사용할 수 있지만 저장 프로 시저를 변환할지 여부는 확실하지 않습니다. 그러나 시작할 수있는 장소를 제공 할 수도 있습니다.

+0

... 다음 당신의 공헌이 필요합니다
힌트 힌트 ... 여기

내가 (2) 위를 위해 무엇을 의미하는지의 - SQL 쿼리 변환기. \t - PL/SQL 코드 변환기. – dacracot

+0

더 살펴보면 패키지를 내보낼 것으로 보이지만 100 % 제대로 작동 할 것이라는 확신이 부족한 것으로 보입니다. 한 번해볼 만하다. – dacracot

2

오라클로부터의 마이그레이션을 돕기 위해 오라클 호환성이 상당히 높은 EnterpriseDB도 있습니다. 오라클과 호환되는 버전은 무료는 아니지만 한 가지 이상의 프로 시저 변환을 수행하는 경우에 한해 볼 가치가 있습니다.

+0

파이어 버드 (예 : Interbase)가 Compiere의 IIRC와 동일한 작업을 수행하는 Fyracle도 있습니다. – ConcernedOfTunbridgeWells

2

상당 기간 오라클 - 포스트그레스 변환 작업을 해왔습니다. 그것을하기위한 유일한 방법은 손으로하는 것입니다. 두 언어 사이에는 미묘한 차이가 있습니다. 우리는 자동화 된 도구를 사용해 보았지만 문제가 악화되었고 결과물을 버리는 결과를 낳았습니다.

2

ora2pg를 사용하여 스키마를 변환하십시오. 저장 프로 시저에 대한

:

  1. 수동 CASE 문에 대한 모든 DECODE()와 (+) 외부 LEFT OUTER가 문을 가입 명시 적으로 조인 모든 이전 스타일 오라클을 변환합니다. 나는 이것을 할 수있는 도구를 찾지 못했습니다.
  2. PL/PGSQL에서 PL/SQL 함수를 변환합니다 (아래 참조).

누군가가 이것을 수행하기 위해 sourceforge 프로젝트를 시작하면 매우 좋을 것입니다. \t :

ora2pg 배포판에 포함 된 TODO 문서에서
CREATE OR REPLACE FUNCTION trunc(
    parmDate DATE , 
    parmFormat VARCHAR) 
RETURNS date 
AS $$ 
DECLARE 
    varPlSqlFormat VARCHAR; 
    varPgSqlFormat VARCHAR; 
BEGIN 
    varPgSqlFormat := lower(parmFormat); 

    IF varPgSqlFormat IN (
    'syyyy' , 
    'yyyy' , 
    'year' , 
    'syear' , 
    'yyy' , 
    'yy' , 
    'y' ) THEN 
    varPgSqlFormat := 'year'; 
    ELSEIF varPgSqlFormat IN (
    'month' , 
    'mon' , 
    'mm' , 
    'rm' ) THEN 
    varPgSqlFormat := 'month'; 
    ELSEIF varPgSqlFormat IN (
    'ddd' , 
    'dd' , 
    'j' ) THEN 
    varPgSqlFormat := 'day'; 
    END IF; 

    RETURN DATE_TRUNC(varPgSqlFormat,parmDate); 
END; 
$$ LANGUAGE plpgsql; 

CREATE OR REPLACE FUNCTION trunc(
    parmDate DATE) 
RETURNS date 
AS $$ 
DECLARE 
BEGIN 
    RETURN DATE_TRUNC('day',parmDate); 
END; 
$$ LANGUAGE plpgsql; 

CREATE OR REPLACE FUNCTION last_day(in_date date) RETURNS date 
AS $$ 
DECLARE 
BEGIN 
    RETURN CAST(DATE_TRUNC('month', in_date) + '1 month'::INTERVAL AS DATE) - 1; 
END; 
$$ LANGUAGE plpgsql; 
관련 문제