Daten in neue Datenbank kopieren
Hallo allerseits,
ich würde gerne Daten von einer Datenbank in eine andere einfügen.
Habe dazu eine Abfrage, welche mir bestimmte Datensätze ausgibt und diese möchte ich in eine neue einfügen.
Also so:
$ask = "SELECT deutsch, griechisch FROM word GROUP BY deutsch, griechisch;";
$re = @mysql_query($ask);
$data = mysql_fetch_array($re);
for ($i=0;$i<count($data["deutsch"]);$i++) {
mysql_query("INSERT INTO kurz (deutsch, griechisch) VALUES ('".$data["deutsch"][$i]."', '".$data["griechisch"][$i]."')");
}
Aber dabei wird nicht der ganze Array $data, sondern immer nur das erste Wort des Arrays in eine Spalte geschrieben.
Wie würdet ihr es machen?
Gruß,
Üsch
Antwort schreiben
Antwort 1 von son_quatsch vom 03.03.2020, 08:29 Options
$ask= "SELECT deutsch, griechisch FROM word GROUP BY deutsch, griechisch";
$re= mysql_query($ask) or die('abfrage fehlgeschlagen'. mysql_error());
while ($datensatz= mysql_fetch_array($re, MYSQL_BOTH)) {
mysql_query("INSERT INTO kurz(deutsch, griechisch) VALUES('". $datensatz["deutsch"]."', '". $datensatz["griechisch"]."')") or die('abfrage fehlgeschlagen'. mysql_error());
}
mysql_free_result($re);
- Semikola haben in den SQL-Statements nichts zu suchen
- Entweder lässt du dir einmal alle Datensätze zurückgeben und kannst dann darauf eine FOR-Schleife anwenden, oder du machst es datensatzweise mit einer WHILE-Schleife - ein Mix aus beidem geht nicht
Antwort 2 von Uesch vom 03.03.2020, 16:39 Options
Vielen Dank, das hat erstmal gefunzt. Die Sache ist nur die, die griechischen Vokabeln sind teilweise anders gespeichert. Also z.B. gibt es das Wort "Elxy" so geschrieben: εργοδότης
Und es gibt das Wort "Elxy" so geschrieben: εργοδότης
Die beiden Wörter heißen genau das gleiche und sehen auch genau gleich aus, wenn sie in Buchstaben umgewandelt worden sind.
Gibt es eine Möglichkeit, vor dem GROUP BY, die obere Form umzuwandeln, dass sie der unteren entspricht, also irgendsowas wie decode..?
Gruß,
Üsch
Antwort 3 von rabies vom 03.03.2020, 20:20 Options
Wieso speicherst Du die Wörter nicht in einem passenden Format? UTF8? ... Dann könntest Du Dir die wirren Zeichen in der Datenbank ersparen.
Antwort 4 von Supermax vom 03.03.2020, 22:04 Options
Wenn die Struktur der beiden Tabellen gleich ist, geht es auch ohne den Umweg über PHP mit der SQL-Anweisung
INSERT INTO neue_tabelle(spalte1,spalte2) SELECT spalte1alt,spalte2alt FROM alte_tabelle WHERE [i]bedingung[/i]
.
Allerdings würde ich dir ebenfalls raten - wie bereits von "rabies" vorgeschlagen - eine für internationale Zeichensätze geeignete Textcodierung in deiner Datenbank einzusetzen. UTF-8 ist hierfür ein geeigneter Standard, obwohl hier besonders im Zusammenspiel mit PHP einige Fallstricke lauern.