Hallo und guten Tag,
ich habe ein Problem beim Datenimport aus unterschiedlichen/entfernten Datenbanken.
Wobei ich mit "entfernt" natürlich nicht gelöscht, sondern auf einem anderen Server meine
Wenn beide Datenbanken auf Localhost liegen, und mit gleichem Benutzernamen/Passwort angesprochen werden können, funktioniert der Datenimport mit folgendem Programm gut.
Wie stelle ich das ganze aber an, wenn sich Datenbank 1 mit ihrem Benutzernamen/Passwort auf localhost befindet, Datenbank 2 jedoch auf hostirgendwo mit Benutzername xy /Passwort yz?
Ich suche nun schon einige Zeit erfolglos nach einer Lösung... oder ich verwende die falschen Suchwörter?
Jedenfalls würde ich mich über heisse Tips freuen. Dinge wie z.B. einen mysqldump der entfernten Datenbank nach localhost einspielen und von dort importieren wären allerdings keine Option.
Freundliche Grüße,
Thomas
ich habe ein Problem beim Datenimport aus unterschiedlichen/entfernten Datenbanken.
Wobei ich mit "entfernt" natürlich nicht gelöscht, sondern auf einem anderen Server meine

Wenn beide Datenbanken auf Localhost liegen, und mit gleichem Benutzernamen/Passwort angesprochen werden können, funktioniert der Datenimport mit folgendem Programm gut.
PHP-Code:
<?php
function xyz( )
{
// Datenbankverbindung
$connect = new mysqli( _DBHOST, _DBENUTZER, _DBPASSWORT );
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Datenbank1 wählen
mysqli_select_db( $connect, _DATENBANK );
// Abfrage datenbank 1
$sql = mysqli_query( $connect, "SELECT name FROM datenbank1" );
while ( $sqldata = mysqli_fetch_array( $sql, MYSQLI_ASSOC ) )
{
$sql2[] = $sqldata['name'];
}
// ABfrage Datenbank 2
mysqli_select_db( $connect, _DATENBANK2 );
// alle zu importierenden Datensätze in db1 auswählen
$sqlxy = "SELECT * FROM datenbank1 WHERE mussimport=1";
// mit db1 verbinden
$res = mysqli_query( $connect, $sqlxy );
while ( $data = mysqli_fetch_array( $res, MYSQLI_ASSOC ) ) {
// prüfen, ob Name bereits in beiden Datenbanken vorhanden
if ( @in_array( @$data['name'], @$sql2 ) ) {
// Name existiert, nicht zum Import freigegeben
echo $data['name']." <font color=\"red\">Datensatz nicht importiert</font>"."<br>";
} else if ( importData( $data['name'], $data['adresse'], $data['telefon'], $data['lastchange'], $data['irgendwas'] ) == 1 ) {
echo $data['name']." <font color=\"green\">Datensatz importiert</font>"."<br>";
} else {
echo $data['name']." <font color=\"red\"><b>Fehler gar nichts importiert</font>"."<br>";
}
}
}
function importData( $name, $adresse, $telefon, $lastchange, $irgendwas, $id = "" )
{
// Datenbankverbindung
$connect = new mysqli( _DBHOST, _DBENUTZER, _DBPASSWORT );
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Datenbank1 wählen
mysqli_select_db( $connect, _DATENBANK );
if ( is_numeric( $telefon ) == FALSE ) {
return FALSE;
} else {
if ( $id == "" ) {
$sqlxy = "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv )
VALUES ('{$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1)";
} else {
$adressdata = mysqli_query( $connect, "SELECT id FROM datenbank1 WHERE id={$id}" );
if ( mysqli_num_rows( $adressdata ) == 1 ) {
$sqlxy = "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv, kunde_id)
VALUES ('{$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1, {$id})";
} else {
$sqlxy = "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv)
VALUES ('{$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1)";
}
}
$check = mysqli_query( $connect, $sqlxy );
if ( $check ) {
return TRUE;
} else{
return FALSE;
}
}
}
?>
Ich suche nun schon einige Zeit erfolglos nach einer Lösung... oder ich verwende die falschen Suchwörter?
Jedenfalls würde ich mich über heisse Tips freuen. Dinge wie z.B. einen mysqldump der entfernten Datenbank nach localhost einspielen und von dort importieren wären allerdings keine Option.
Freundliche Grüße,
Thomas
Kommentar