summaryrefslogtreecommitdiff
path: root/vendor/adodb/adodb-php/replicate/test-tnb.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/adodb/adodb-php/replicate/test-tnb.php')
-rw-r--r--vendor/adodb/adodb-php/replicate/test-tnb.php421
1 files changed, 421 insertions, 0 deletions
diff --git a/vendor/adodb/adodb-php/replicate/test-tnb.php b/vendor/adodb/adodb-php/replicate/test-tnb.php
new file mode 100644
index 0000000..f163ff4
--- /dev/null
+++ b/vendor/adodb/adodb-php/replicate/test-tnb.php
@@ -0,0 +1,421 @@
+<?php
+include_once('../adodb.inc.php');
+include_once('adodb-replicate.inc.php');
+
+set_time_limit(0);
+
+function IndexFilter($dtable, $idxname,$flds,$options)
+{
+ if (strlen($idxname) > 28) $idxname = substr($idxname,0,24).rand(1000,9999);
+ return $idxname;
+}
+
+function SelFilter($table, &$arr, $delfirst)
+{
+ return true;
+}
+
+function updatefilter($table, $fld, $val)
+{
+ return "nvl($fld, $val)";
+}
+
+
+function FieldFilter(&$fld,$mode)
+{
+ $uf = strtoupper($fld);
+ switch($uf) {
+ case 'SIZEFLD':
+ return 'Size';
+
+ case 'GROUPFLD':
+ return 'Group';
+
+ case 'GROUP':
+ if ($mode == 'SELECT') $fld = '"Group"';
+ return 'GroupFld';
+ case 'SIZE':
+ if ($mode == 'SELECT') $fld = '"Size"';
+ return 'SizeFld';
+ }
+ return $fld;
+}
+
+function ParseTable(&$table, &$pkey)
+{
+ $table = trim($table);
+ if (strlen($table) == 0) return false;
+ if (strpos($table, '#') !== false) {
+ $at = strpos($table, '#');
+ $table = trim(substr($table,0,$at));
+ if (strlen($table) == 0) return false;
+ }
+
+ $tabarr = explode(',',$table);
+ if (sizeof($tabarr) == 1) {
+ $table = $tabarr[0];
+ $pkey = '';
+ echo "No primary key for $table **** **** <br>";
+ } else {
+ $table = trim($tabarr[0]);
+ $pkey = trim($tabarr[1]);
+ if (strpos($pkey,' ') !== false) echo "Bad PKEY for $table $pkey<br>";
+ }
+
+ return true;
+}
+
+global $TARR;
+
+function TableStats($rep, $table, $pkey)
+{
+global $TARR;
+
+ if (empty($TARR)) $TARR = array();
+ $cnt = $rep->connSrc->GetOne("select count(*) from $table");
+ if (isset($TARR[$table])) echo "<h1>Table $table repeated twice</h1>";
+ $TARR[$table] = $cnt;
+
+ if ($pkey) {
+ $ok = $rep->connSrc->SelectLimit("select $pkey from $table",1);
+ if (!$ok) echo "<h1>$table: $pkey does not exist</h1>";
+ } else
+ echo "<h1>$table: no primary key</h1>";
+}
+
+function CreateTable($rep, $table)
+{
+## CREATE TABLE
+ #$DB2->Execute("drop table $table");
+
+ $rep->execute = true;
+ $ok = $rep->CopyTableStruct($table);
+ if ($ok) echo "Table Created<br>\n";
+ else {
+ echo "<hr>Error: Cannot Create Table<hr>\n";
+ }
+ flush();@ob_flush();
+}
+
+function CopyData($rep, $table, $pkey)
+{
+ $dtable = $table;
+
+ $rep->execute = true;
+ $rep->deleteFirst = true;
+
+ $secs = time();
+ $rows = $rep->ReplicateData($table,$dtable,array($pkey));
+ $secs = time() - $secs;
+ if (!$rows || !$rows[0] || !$rows[1] || $rows[1] != $rows[2]+$rows[3]) {
+ echo "<hr>Error: "; var_dump($rows); echo " (secs=$secs) <hr>\n";
+ } else
+ echo date('H:i:s'),': ',$rows[1]," record(s) copied, ",$rows[2]," inserted, ",$rows[3]," updated (secs=$secs)<br>\n";
+ flush();@ob_flush();
+}
+
+function MergeDataJohnTest($rep, $table, $pkey)
+{
+ $rep->SwapDBs();
+
+ $dtable = $table;
+ $rep->oracleSequence = 'LGBSEQUENCE';
+
+# $rep->MergeSrcSetup($table, array($pkey),'UpdatedOn','CopiedFlag');
+ if (strpos($rep->connDest->databaseType,'mssql') !== false) { # oracle ==> mssql
+ $ignoreflds = array($pkey);
+ $ignoreflds[] = 'MSSQL_ID';
+ $set = 'MSSQL_ID=nvl($INSERT_ID,MSSQL_ID)';
+ $pkeyarr = array(array($pkey),false,array('MSSQL_ID'));# array('MSSQL_ID', 'ORA_ID'));
+ } else { # mssql ==> oracle
+ $ignoreflds = array($pkey);
+ $ignoreflds[] = 'ORA_ID';
+ $set = '';
+ #$set = 'ORA_ID=isnull($INSERT_ID,ORA_ID)';
+ $pkeyarr = array(array($pkey),array('MSSQL_ID'));
+ }
+ $rep->execute = true;
+ #$rep->updateFirst = false;
+ $ok = $rep->Merge($table, $dtable, $pkeyarr, $ignoreflds, $set, 'UpdatedOn','CopiedFlag',array('Y','N','P','='), 'CopyDate');
+ var_dump($ok);
+
+ #$rep->connSrc->Execute("update JohnTest set name='Apple' where id=4");
+}
+
+$DB = ADONewConnection('odbtp');
+#$ok = $DB->Connect('localhost','root','','northwind');
+$ok = $DB->Connect('192.168.0.1','DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=natsoft;DATABASE=OIR;','','');
+$DB->_bindInputArray = false;
+
+$DB2 = ADONewConnection('oci8');
+$ok2 = $DB2->Connect('192.168.0.2','tnb','natsoft','RAPTOR','');
+
+if (!$ok || !$ok2) die("Failed connection DB=$ok DB2=$ok2<br>");
+
+$tables =
+"
+JohnTest,id
+";
+
+# net* are ERMS, need last updated field from LGBnet
+# tblRep* are tables insert or update from Juris, need last updated field also
+# The rest are lookup tables, can copy all from LGBnet
+
+$tablesOrig =
+"
+SysVoltSubLevel,id
+# Lookup table for Restoration Details screen
+sysefi,ID # (not identity)
+sysgenkva,ID #(not identity)
+sysrestoredby,ID #(not identity)
+# Sel* table added on 24 Oct
+SELSGManufacturer,ID
+SelABCCondSizeLV,ID
+SelABCCondSizeMV,ID
+SelArchingHornSize,ID
+SelBallastSize,ID
+SelBallastType,ID
+SelBatteryType,ID #(not identity)
+SelBreakerCapacity,ID
+SelBreakerType,ID #(not identity)
+SelCBreakerManuf,ID
+SelCTRatio,ID #(not identity)
+SelCableBrand,ID
+SelCableSize,ID
+SelCableSizeLV,ID # (not identity)
+SelCapacitorSize,ID
+SelCapacitorType,ID
+SelColourCode,ID
+SelCombineSealingChamberSize,ID
+SelConductorBrand,ID
+SelConductorSize4,ID
+SelConductorSizeLV,ID
+SelConductorSizeMV,ID
+SelContactorSize,ID
+SelContractor,ID
+SelCoverType,ID
+SelCraddleSize,ID
+SelDeadEndClampBrand,ID
+SelDeadEndClampSize,ID
+SelDevTermination,ID
+SelFPManuf,ID
+SelFPillarRating,ID
+SelFalseTrue,ID
+SelFuseManuf,ID
+SelFuseType,ID
+SelIPCBrand,ID
+SelIPCSize,ID
+SelIgnitorSize,ID
+SelIgnitorType,ID
+SelInsulatorBrand,ID
+SelJoint,ID
+SelJointBrand,ID
+SelJunctionBoxBrand,ID
+SelLVBoardBrand,ID
+SelLVBoardSize,ID
+SelLVOHManuf,ID
+SelLVVoltage,ID
+SelLightningArresterBrand,ID
+SelLightningShieldwireSize,ID
+SelLineTapSize,ID
+SelLocation,ID
+SelMVVoltage,ID
+SelMidSpanConnectorsSize,ID
+SelMidSpanJointSize,ID
+SelNERManuf,ID
+SelNERType,ID
+SelNLinkSize,ID
+SelPVCCondSizeLV,ID
+SelPoleBrand,ID
+SelPoleConcreteSize,ID
+SelPoleSize,ID
+SelPoleSpunConcreteSize,ID
+SelPoleSteelSize,ID
+SelPoleType,ID
+SelPoleWoodSize,ID
+SelPorcelainFuseSize,ID
+SelRatedFaultCurrentBreaker,ID
+SelRatedVoltageSG,ID #(not identity)
+SelRelayType,ID # (not identity)
+SelResistanceValue,ID
+SelSGEquipmentType,ID # (not identity)
+SelSGInsulationType,ID # (not identity)
+SelSGManufacturer,ID
+SelStayInsulatorSize,ID
+SelSuspensionClampBrand,ID
+SelSuspensionClampSize,ID
+SelTSwitchType,ID
+SelTowerType,ID
+SelTransformerCapacity,ID
+SelTransformerManuf,ID
+SelTransformerType,ID #(not identity)
+SelTypeOfArchingHorn,ID
+SelTypeOfCable,ID #(not identity)
+SelTypeOfConductor,ID # (not identity)
+SelTypeOfInsulationCB,ID # (not identity)
+SelTypeOfMidSpanJoint,ID
+SelTypeOfSTJoint,ID
+SelTypeSTCable,ID
+SelUGVoltage,ID # (not identity)
+SelVoltageInOut,ID
+SelWireSize,ID
+SelWireType,ID
+SelWonpieceBrand,ID
+#
+# Net* tables added on 24 Oct
+NetArchingHorn,Idx
+NetBatteryBank,Idx # identity, FunctLocation Pri
+NetBiMetal,Idx
+NetBoxFuse,Idx
+NetCable,Idx # identity, FunctLocation Pri
+NetCapacitorBank,Idx # identity, FunctLocation Pri
+NetCircuitBreaker,Idx # identity, FunctLocation Pri
+NetCombineSealingChamber,Idx
+NetCommunication,Idx
+NetCompInfras,Idx
+NetControl,Idx
+NetCraddle,Idx
+NetDeadEndClamp,Idx
+NetEarthing,Idx
+NetFaultIndicator,Idx
+NetFeederPillar,Idx # identity, FunctLocation Pri
+NetGenCable,Idx # identity , FunctLocation Not Null
+NetGenerator,Idx
+NetGrid,Idx
+NetHVOverhead,Idx #identity, FunctLocation Pri
+NetHVUnderground,Idx #identity, FunctLocation Pri
+NetIPC,Idx
+NetInductorBank,Idx
+NetInsulator,Idx
+NetJoint,Idx
+NetJunctionBox,Idx
+NetLVDB,Idx #identity, FunctLocation Pri
+NetLVOverhead,Idx
+NetLVUnderground,Idx # identity, FunctLocation Not Null
+NetLightningArrester,Idx
+NetLineTap,Idx
+NetMidSpanConnectors,Idx
+NetMidSpanJoint,Idx
+NetNER,Idx # identity , FunctLocation Pri
+NetOilPump,Idx
+NetOtherComponent,Idx
+NetPole,Idx
+NetRMU,Idx # identity, FunctLocation Pri
+NetStreetLight,Idx
+NetStrucSupp,Idx
+NetSuspensionClamp,Idx
+NetSwitchGear,Idx # identity, FunctLocation Pri
+NetTermination,Idx
+NetTransition,Idx
+NetWonpiece,Idx
+#
+# comment1
+SelMVFuseType,ID
+selFuseSize,ID
+netRelay,Idx # identity, FunctLocation Pri
+SysListVolt,ID
+sysVoltLevel,ID_SVL
+sysRestoration,ID_SRE
+sysRepairMethod,ID_SRM # (not identity)
+
+sysInterruptionType,ID_SIN
+netTransformer,Idx # identity, FunctLocation Pri
+#
+#
+sysComponent,ID_SC
+sysCodecibs #-- no idea, UpdatedOn(the only column is unique),Ermscode,Cibscode is unique but got null value
+sysCodeno,id
+sysProtection,ID_SP
+sysEquipment,ID_SEQ
+sysAddress #-- no idea, ID_SAD(might be auto gen No)
+sysWeather,ID_SW
+sysEnvironment,ID_SE
+sysPhase,ID_SPH
+sysFailureCause,ID_SFC
+sysFailureMode,ID_SFM
+SysSchOutageMode,ID_SSM
+SysOutageType,ID_SOT
+SysInstallation,ID_SI
+SysInstallationCat,ID_SIC
+SysInstallationType,ID_SIT
+SysFaultCategory,ID_SF #(not identity)
+SysResponsible,ID_SR
+SysProtectionOperation,ID_SPO #(not identity)
+netCodename,CodeNo #(not identity)
+netSubstation,Idx #identity, FunctLocation Pri
+netLvFeeder,Idx # identity, FunctLocation Pri
+#
+#
+tblReport,ReportNo
+tblRepRestoration,ID_RR
+tblRepResdetail,ID_RRD
+tblRepFailureMode,ID_RFM
+tblRepFailureCause,ID_RFC
+tblRepRepairMethod,ReportNo # (not identity)
+tblInterruptionType,ID_TIN
+tblProtType,ID_PT #--capital letter
+tblRepProtection,ID_RP
+tblRepComponent,ID_RC
+tblRepWeather,ID_RW
+tblRepEnvironment,ID_RE
+tblRepSubstation,ID_RSS
+tblInstallationType,ID_TIT
+tblInstallationCat,ID_TIC
+tblFailureCause,ID_TFC
+tblFailureMode,ID_TFM
+tblProtection,ID_TP
+tblComponent,ID_TC
+tblProtdetail,Id # (Id)--capital letter for I
+tblInstallation,ID_TI
+#
+";
+
+
+$tables = explode("\n",$tables);
+
+$rep = new ADODB_Replicate($DB,$DB2);
+$rep->fieldFilter = 'FieldFilter';
+$rep->selFilter = 'SELFILTER';
+$rep->indexFilter = 'IndexFilter';
+
+if (1) {
+ $rep->debug = 1;
+ $DB->debug=1;
+ $DB2->debug=1;
+}
+
+# $rep->SwapDBs();
+
+$cnt = sizeof($tables);
+foreach($tables as $k => $table) {
+ $pkey = '';
+ if (!ParseTable($table, $pkey)) continue;
+
+ #######################
+
+ $kcnt = $k+1;
+ echo "<h1>($kcnt/$cnt) $table -- $pkey</h1>\n";
+ flush();@ob_flush();
+
+ CreateTable($rep,$table);
+
+
+ # COPY DATA
+
+
+ TableStats($rep, $table, $pkey);
+
+ if ($table == 'JohnTest') MergeDataJohnTest($rep, $table, $pkey);
+ else CopyData($rep, $table, $pkey);
+
+}
+
+
+if (!empty($TARR)) {
+ ksort($TARR);
+ adodb_pr($TARR);
+ asort($TARR);
+ adodb_pr($TARR);
+}
+
+echo "<hr>",date('H:i:s'),": Done</hr>";