Ok das mit der Datenbank geht hier nicht so ganz deutlich hervor. Normalerweise verwende ich eine Klasse db die mir das alles ein wenig erleichtert.
Aber nun zu deinen Fragen. Der übersicht halber würde ich zwei Variable definieren die die Gewünschten Tabellennamen enthalten.
In deinem Fall wären das:
[php:1:721c291ae2]
$table_export = 'tt_adress';
$table_import = 'nletter_entries';
[/php:1:721c291ae2]
bei der Datenbank empfiehlt sich das selbe:
[php:1:721c291ae2]
$source_db = 'usr_web5_5';
$target_db = 'usr_web5_6';
[/php:1:721c291ae2]
Aber wo macht man denn nun die Angaben???
Ok zuerst musst du eine Verbindung zum Datenbankserver herstellen. Das ist wie gehabt:
[php:1:721c291ae2]
$host = "localhost";
$user ="web5";
$pwd = "sage ich nicht";
$connect = mysql_connect($host,$user,$pwd);
if(!connect) {
die("Keine Verbindung");
}
[/php:1:721c291ae2]
Wenn du das hast kannst du die Datenbank selecten. Zuerst die Quelldatenbank:
[php:1:721c291ae2]
mysql_select_db($source_db);
[/php:1:721c291ae2]
Nun bist du mit der Quelldatenbank verbunden und kannst Befehle an sie senden. Du möchtest aus der Tabelle $table_export gewisse Dinge in ein File speichern. Dafür gibt es den SQL Befehl SELECT...INTO OUTFILE.... und musst dementsprechend den SQL Befehl wie folgt an die Datenbank senden:
[php:1:721c291ae2]
$sql = "SELECT pid, email, name
INTO OUTFILE '/home/www/web5/backup/usr_web5_5.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM $table_export ";
[/php:1:721c291ae2]
SELECT wählt die Felder aus (pid...) INTO OUTFILE definiert Pfad und Datei. FIELDS TERMINATED BY legt fest welche Trennzeichen zwichen den Felder in deiner Datei stehen sollen. Das sieht im Texteditor dann in etwa so aus
12;"benni_f@gmx.net". Es ist sehr wichtig das du beim auslesen die selben "TERMINATED BY" verwendest weil mysql sonst nicht weiß wo ein Feld endet. FROM definiert die Tabelle in der die Felder stehen. In deinem Fall $table_export.
Nun hast du erstmal die Datei in der deine gewünschten Daten stehen. Zum schluss solltest du die Verbindung zu dieser Datenbank schließen weil du ja zu einer anderen eine Verbindung aufbauen möchtest.
[php:1:721c291ae2]
mysql_close();
[/php:1:721c291ae2]
...schließt alle vorhandenen Verbindungen.
Also nächstes bauen wir zur Zieldatenbank eine neue auf. Dazu verwenden wir wieder die vorher definierte Variable $target_db für die Zieldatenbank:
[php:1:721c291ae2]
mysql_select_db($target_db);
[/php:1:721c291ae2]
nach dem wir die Verbindung haben müssen wir uns überlegen wie wir vorgehen möchten.
Entweder die Tabelle und Struktur existiert, oder wir bauen sie uns. Ich bin davon ausgegangen das sie existiert(ich habe sie vorher erstellt). Falls nur die Datenbank und die Tabelle existiert, allerdings die Felder noch nicht, musst du diese dann erstellen.
[php:1:721c291ae2]
$sql = "CREATE TABLE $import_table (
pid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mail VARCHAR(256) NOT NULL,
name VARCHAR(256) NOT NULL
);";
[/php:1:721c291ae2]
Damit hast du eine Tabelle erstellt in der die Felder die du exportiert hast belegt werden können.
Wenn du die Tabelle vorher leeren möchtest brauchst du folgenden SQL Befehl:
[php:1:721c291ae2]
$sql="TRUNCATE TABLE $import_table";
[/php:1:721c291ae2]
Tabelle erstellt und leer dann rein damit:
[php:1:721c291ae2]
$sql = "LOAD DATA LOCAL
INFILE '/home/www/web5/backup/usr_web5_5.csv'
REPLACE
INTO TABLE $import_table
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";
[/php:1:721c291ae2]
INTO TABLE gibt dir die Zieldatenbank an. In diesem Falle $import_table.
Das wars eigentlich schon ich schreibs dir zur Übersicht nochmal Komplett auf.
[php:1:721c291ae2]
<?php
/**
*
*
* @version $0.1
* @copyright 2006
*/
$host = "localhost";
$user ="web5";
$pwd = "sage ich nicht";
//Datenbankvariablen und Tabellennamen
$table_export = 'tt_adress';
$table_import = 'nletter_entries';
$source_db = 'usr_web5_5';
$target_db = 'usr_web5_6';
$connect = mysql_connect($host,$user,$pwd);
if(!connect) {
die("Keine Verbindung");
}
//connect zur ersten db
mysql_select_db($source_db);
if(isset($_GET['export']) && $_GET['export'] == 'on') {
$sql = "SELECT pid, email, name
INTO OUTFILE '/home/www/web5/backup/usr_web5_5.csv'
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
FROM $table_export ";
if(!$result = mysql_query($sql)) {
die("Could not query EXPORT");
}
}
else {
echo '<html><body>
Exportieren???';
}
if(isset($_GET['import'])&& $_GET['import']== 'on') {
//connect zur 2.Datenbank
mysql_select_db($target_db);
$sql = "CREATE TABLE IF NOT EXISTS ".$table_import."(
pid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mail VARCHAR(256) NOT NULL,
name VARCHAR(256) NOT NULL
)";
if(!$result = mysql_query($sql)) {
die("Could not CREATE TABLE");
}
$sql = "TRUNCATE TABLE ".$table_import;
if(!$result = mysql_query($sql)) {
die ("Could Not TRUNCATE");
}
$sql = "LOAD DATA LOCAL
INFILE '/home/www/web5/backup/usr_web5_5.csv'
REPLACE
INTO TABLE $table_import
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'";
if(!$result = mysql_query($sql)) {
die ("Could Not INSERT");
}
mysql_close();
}
else {
echo '
Importieren???</html>';
}
?>
[/php:1:721c291ae2]
Sorry hat en wenig gedauert