Скопируйте данные нескольких таблиц из оракула в соответствующую таблицу в postgresql, используя скрипт Ultmate ++ - PullRequest
0 голосов
/ 16 марта 2019

Я настроил таблицы, такие как A, B, C, D и т. Д., В нашем программном обеспечении для бизнес-решений, которое находится в базе данных Oracle, и я хочу, чтобы данные этих таблиц были скопированы в мои таблицы базы данных postgersql 1,2,3..etc с использованием программирования Ultimate ++.

В настоящее время мы жестко запрограммировали скрипт, в котором я дал имя исходной таблицы и таблицу назначения в качестве входной строки для копирования данных из одной в другую. Было бы полезно, если кто-нибудь подскажет, как я могу автоматизировать его для передачи данных из нескольких таблиц.к соответствующим другим таблицам, имеющим другое имя.

, приложив мой текущий скрипт для вашей справки.

 #include "Conn2Databases.h"

#define IMAGEFILE <Conn2Databases/Conn2Databases.iml>
#include <Draw/iml_source.h>
#include <sstream>
#include <string>

Conn2Databases::Conn2Databases()
{
    CtrlLayout ( *this, "Window title" );
    btnOpenDB << THISBACK ( OpenDB );
    oConnected = pConnected = false ;
    firstRun = true;
}


void Conn2Databases::OpenDB()
{
    String Qpsql, Qora;
    SqlColumnInfo sqlInf;
    int ColCount1, rowcnt = 0;
    String colName, strData;
    String tablename = t1.GetData();
    String tablename2 = t2.GetData();




    Qora = "Select * FROM " << tablename1;
    Qpsql = "insert into " << tablename2 << " (colName) values (";



    if ( !psql_session.Open ( "host=IP-Address dbname=ABC_reports user=reportuser password=PWD" ) )
    {
        Exclamation ( Format ( "Error in open: %s", DeQtf ( psql_session.GetLastError() ) ) );

    }

    else
    {

#ifdef _DEBUG
        psql_session.SetTrace();
#endif


        pConnected = true ;
    }


#ifdef PLATFORM_LINUX
    if (oracle_session.Login ("user", "pwd" , "Hostname", true))

#else


//      if ( oracle_session.Login ( "user", "pwd" , "Hostname", true ) )
#endif
    {

        oConnected = true ;
    }
    else
    {
        Exclamation ( Format ( "Error in open: %s", DeQtf ( oracle_session.GetLastError() ) ) );

    }


    if ( oConnected )
        LOG ( "Oracle connected" );

    if ( pConnected )
        LOG ( "PostgreSQL connected" );

    if ( oConnected & pConnected )
    {
        Sql sqlORA ( oracle_session );
        Sql sqlPSQL ( psql_session );


        sqlPSQL.Execute ( "delete  from " << tablename2 << ";" );


        if ( sqlORA.Execute ( Qora ) )
        {
            ColCount1 = sqlORA.GetColumns();
            DUMP ( ColCount1 );
            String line;
            String strField;



            colName << "insert into " << tablename2 << "( ";

            for ( int i = 0; i < ColCount1; i++ )
            {
                sqlInf = sqlORA.GetColumnInfo ( i );
                colName << sqlInf.name;

                if ( ( i + 1 ) < ( ColCount1 ) )
                    colName << "," ;
            }

            colName << " ) values ";

            DUMP ( colName );


            for ( ;; )
            {

                Vector<Value> rowdata;


                if ( !sqlORA.Fetch ( rowdata ) )
                {

                    break ;
                }

                else
                {


                    //DUMP ( rowdata );
                    String Q1, Q2 ;
                    Q1 << "( ";

                    for ( int i = 0; i < rowdata.GetCount(); i++ )

                    {
                        String s;
                        s << rowdata[i] ;
                        s.Replace ( "'", "''" );
                        Q1 << "'" << s << "'";

                        if ( ( i + 1 ) < ( rowdata.GetCount() ) )
                            Q1 << "," ;

                    }

                    Q1 << "),";

                    colName << Q1 ;

                    DUMP ( Q1 );


                }
            }

            int len = colName.GetLength();

            colName.Set ( len - 1, ';' );
            sqlPSQL.Execute ( colName );
            DUMP ( colName );
        }
    }

}



GUI_APP_MAIN
{
    Conn2Databases().Run();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...