Я настроил таблицы, такие как 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();
}