오라클의 PL/SQL 저장 프로 시저 언어를 PostgreSQL의 PL/pgSQL 저장 프로 시저 언어로 변환하는 도구가 있습니까?Oracle PL/SQL을 PostgreSQL PL/pgSQL로 변환하는 도구
답변
http://ora2pg.darold.net/에서 사용할 수있는 도구가 있습니다.이 도구는 Oracle 스키마를 Postgres 스키마로 변환하는 데 사용할 수 있지만 저장 프로 시저를 변환할지 여부는 확실하지 않습니다. 그러나 시작할 수있는 장소를 제공 할 수도 있습니다.
오라클로부터의 마이그레이션을 돕기 위해 오라클 호환성이 상당히 높은 EnterpriseDB도 있습니다. 오라클과 호환되는 버전은 무료는 아니지만 한 가지 이상의 프로 시저 변환을 수행하는 경우에 한해 볼 가치가 있습니다.
파이어 버드 (예 : Interbase)가 Compiere의 IIRC와 동일한 작업을 수행하는 Fyracle도 있습니다. – ConcernedOfTunbridgeWells
상당 기간 오라클 - 포스트그레스 변환 작업을 해왔습니다. 그것을하기위한 유일한 방법은 손으로하는 것입니다. 두 언어 사이에는 미묘한 차이가 있습니다. 우리는 자동화 된 도구를 사용해 보았지만 문제가 악화되었고 결과물을 버리는 결과를 낳았습니다.
ora2pg를 사용하여 스키마를 변환하십시오. 저장 프로 시저에 대한
:
이- 수동 CASE 문에 대한 모든 DECODE()와 (+) 외부 LEFT OUTER가 문을 가입 명시 적으로 조인 모든 이전 스타일 오라클을 변환합니다. 나는 이것을 할 수있는 도구를 찾지 못했습니다.
- 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;
... 다음 당신의 공헌이 필요합니다
힌트 힌트 ... 여기
내가 (2) 위를 위해 무엇을 의미하는지의 - SQL 쿼리 변환기. \t - PL/SQL 코드 변환기. – dacracot
더 살펴보면 패키지를 내보낼 것으로 보이지만 100 % 제대로 작동 할 것이라는 확신이 부족한 것으로 보입니다. 한 번해볼 만하다. – dacracot