Hallo Leute,
ich habe ein ganz seltsames Problem ich habe eine Klasse
geschrieben die mir Daten aus einer Oracle Datenbank in eine
Mysql Datenbank überträgt.
Das sieht auch alles sehr gut aus, nur ich habes folgendes Problem,
bei großen Tabellen, wird die Tabelle aus irgendeinem Grund plötzlich geleert und das Eintragen geht von vorne los.
Die Klasse macht folgendes sie baut eine Connection zur Oracle Database auf und eine Connection zur Mysql Database
dann wird eine bestimmte Tabelle ausgelesen:
Diese Query wird dann ausgeführt:
dabei wird die bestehend Tablle als erstes gelöscht
danach werden die Daten aus Oracle zeilenweise an mysql abgesetzt:
bei kleinen tabellen ist das auch kein Problem, bei großen (> 200000 Datansätze) wird irgendwann die Tabelle plötzlich geleert und wieder von vorne (glaub ich) befüllt. Ich habe nirgendwo eine Schleife die das auslösen könnte. Mein Verdacht geht in Richtung ZendCore Apache php-cgi.exe denn die legen meinen Rechner fast komplett lahm.....
Umgebung:
ZendCore 2.5
Apache 2.2.4 (32)
Mysql 5.0.18
PHP 5.2.4
Server API cgi-fcgi
Windows Vista
ich habe ein ganz seltsames Problem ich habe eine Klasse
geschrieben die mir Daten aus einer Oracle Datenbank in eine
Mysql Datenbank überträgt.
Das sieht auch alles sehr gut aus, nur ich habes folgendes Problem,
bei großen Tabellen, wird die Tabelle aus irgendeinem Grund plötzlich geleert und das Eintragen geht von vorne los.
Die Klasse macht folgendes sie baut eine Connection zur Oracle Database auf und eine Connection zur Mysql Database
PHP-Code:
public function __construct() {
$this->oraConnect = new PDO("oci:dbname=localhost;charset=AL32UTF8", USER, PASS);
$this->mysqlConnect =new PDO ( 'mysql:dbname=data;host=localhost', USERM, PASSM );
$this->mysqlConnect->query("set character set utf8");
$this->mysqlConnect->query("set names utf8");
}
PHP-Code:
public function getartikelstamm() {
$query = 'SELECT * FROM artikelstamm';
$this->execute ( 'artikelstamm', $query );
}
PHP-Code:
private function execute($table, $query) {
$this->results = $this->oraConnect->query( $query );
$this->trunkate($table);
while ( $resultarray = $this->results->fetch(PDO::FETCH_ASSOC) ) {
$this->writeFile($table,$resultarray);
}
}
PHP-Code:
public function trunkate($name)
{
$this->query="TRUNCATE TABLE `$name` ";
$this->executeMysql();
}
PHP-Code:
while ( $resultarray = $this->results->fetch(PDO::FETCH_ASSOC) ) {
$this->writeFile($table,$resultarray);
}
private function writeFile($table, $resultarray) {
$in='';
$set='';
$head = "insert into $table (";
foreach ( $resultarray as $name => $wert ) {
$in .= "$name,";
$set .= "'$wert',";
}
$insert = $head . substr ( $in, 0, - 1 ) . ") VALUES (" . substr ( $set, 0, - 1 ) . ")";
$this->query=$insert;
$this->executeMysql();
}
Umgebung:
ZendCore 2.5
Apache 2.2.4 (32)
Mysql 5.0.18
PHP 5.2.4
Server API cgi-fcgi
Windows Vista
Kommentar