2008-10-01 10 views
5

में ओरेकल पीएल/एसक्यूएल के अनुवाद के लिए टूल क्या कोई उपकरण (अधिमानतः मुफ़्त) है जो ओरेकल की पीएल/एसक्यूएल संग्रहीत प्रक्रिया भाषा का अनुवाद पोस्टग्रेस्क्ल की पीएल/पीजीएसक्यूएल संग्रहीत प्रक्रिया भाषा में करेगा?पोस्टग्रेस्क्ल पीएल/पीजीएसक्यूएल

उत्तर

3

http://ora2pg.darold.net/ पर एक उपकरण उपलब्ध है जिसका उपयोग ओरेकल स्कीमा को पोस्टग्रेस स्कीमा में स्थानांतरित करने के लिए किया जा सकता है, लेकिन मुझे यकीन नहीं है कि यह संग्रहीत प्रक्रियाओं का भी अनुवाद करेगा या नहीं। लेकिन यह शुरू करने के लिए एक जगह प्रदान कर सकता है।

+0

TODO दस्तावेज़ ora2pg distro में शामिल से ... निम्नलिखित अपने योगदान की जरूरत है:
सुझाव संकेत ...

यहाँ मैं के लिए (2) ऊपर क्या मतलब है - एसक्यूएल क्वेरी कनवर्टर। \t - पीएल/एसक्यूएल कोड कनवर्टर। – dacracot

+0

आगे देखकर, ऐसा लगता है कि यह पैकेज निर्यात करेगा लेकिन ऐसा लगता है कि वे 100% काम करेंगे। एक कोशिश के काबिल है। – dacracot

2

EnterpriseDB भी है जिसमें ओरेकल से प्रवासन में मदद करने के लिए ओरेकल संगतता का काफी कुछ हिस्सा है। ओरेकल संगतता वाला संस्करण मुफ़्त नहीं है लेकिन यदि आप केवल एक प्रक्रिया अनुवाद से अधिक कर रहे हैं तो एक नज़र डालें।

+0

फिराकल भी है, जो एक ही कार्य के लिए फायरबर्ड (नी इंटरबेज) का अनुकूलन है, आईआईआरसी कंप्रेयर के लिए। – ConcernedOfTunbridgeWells

2

कुछ समय के लिए ओरेकल पर पोस्टग्रेस रूपांतरण पर काम करने के बाद। ऐसा करने का एकमात्र तरीका हाथ से है। उन दो भाषाओं के बीच सूक्ष्म मतभेद हैं जो आपको यात्रा कर सकते हैं। हमने एक स्वचालित उपकरण का उपयोग करने की कोशिश की लेकिन यह केवल समस्या को और खराब कर दिया और हम आउटपुट को कचरा खत्म कर दिया।

2

अपनी स्कीमा का अनुवाद करने के लिए ora2pg का उपयोग करें।

संग्रहित प्रक्रियाओं के लिए:

  1. मैन्युअल मामला बयान करने के लिए सभी को डीकोड() और सभी पुरानी शैली ओरेकल कहां (+) बाहरी करने के लिए स्पष्ट वाम बाहरी बयान शामिल हों मिलती है परिवर्तित। मुझे ऐसा करने के लिए कोई उपकरण नहीं मिला है।
  2. पीएल/पीजीएसक्यूएल में पीएल/एसक्यूएल कार्यों का अनुवाद करें (नीचे देखें)।

अगर कोई ऐसा करने के लिए स्रोत फोर्ज प्रोजेक्ट शुरू करता है तो यह बहुत अच्छा होगा। \t:

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; 
संबंधित मुद्दे