![]() |
Datenbank: Mysql • Version: 5.7 • Zugriff über: Delphi xe3
Mysqldatenbank in Datei speichern
Hallo an alle,
ich habe zwei unterschiedliche mysql-Datenbanken und möchte die Datensätze von der einen in die andere übertragen. Die Struktur der Datenbanken ist nicht gleich und sollte auch nicht verändert werden. Es sind so ca. 8000 Datensätze. Ich würde mir gern ein Programm schreiben,mit dem ich es umsetzen kann. Kann man sowas direkt ausführen,oder müssen die Datensätze zuerst in einer Datei zwischengespeichert werden? Wenn ja,welches Dateiformat würde da in Frage kommen,xml-Datei,oder cvs-Datei? Gruß AnfängerDelphi |
AW: Mysqldatenbank in Datei speichern
Meine erste Wahl an deiner Stelle wäre die Benutzung von Datenbank eigenen Tools (dump/bulk insert), die ich für mySQL leider nicht kenne,
Dann würde ich mit Hilfe einer Abfrage Insert Statements generieren und dann mit einem Programm einen Datensatz lesen und diesen dann abspeichern. Eine Zwischenspeicherung ist eigentlich nicht notwendig. Falls Du unbedingt über eine Zwischendatei gehen willst, ist XML empfehlenswert, da du dort auch die Struktur der Datenbank abbilden kannst. Gruß K-H |
AW: Mysqldatenbank in Datei speichern
Kennt MySQL Datenbanklinks?
Wenn ja:
SQL-Code:
insert Spalte11, ..., SpalteN into tabelle select Spalte1, ..., SpalteN from Tabelle@Datenbanklink Where ... soweit erforderlich
Bin mir nicht sicher, vermutlich geht es so:
SQL-Code:
insert Spalte11, ..., SpalteN into tabelle select Spalte1, ..., SpalteN from NameDerAnderenDatenbank.Tabelle Where ... soweit erforderlich
|
AW: Mysqldatenbank in Datei speichern
Als Zwischendateiformat wäre selbstverständlich SQL das tauglichste :D
Ich mache sowas, wenn es mal nötig ist, mit phpMyAdmin, damit sind das ein Klick auf "Export" und einer auf "Import", fertig. Oder sonst auf Konsolenebene mit ![]() |
AW: Mysqldatenbank in Datei speichern
Moin,
sprechen wir hier über Datenbanken oder Tabellen? Bei Tabellen kann man sehr gut mit mysqldump die Spaltennamen und Werte beim Export ausgeben lassen. So ist dann sicher gestellt, dass, wenn die Tabellenstruktur unterschiedlich ist, die Daten von der Quelltabelle in die Zieltabelle übertragen werden können. Voraussetzung dafür ist natürlich, dass die notwendigen Spalten in der Zieltabelle vor dem Import vorhanden sind. Aufpasssen muss man aber mit den Primarykeys. Sind die in beiden Tabellen gleich, dann darf natürlich der zu importierende Wert eines Primarykeys nicht in der Zieltabelle enthalten sein, somnst kracht es. |
AW: Mysqldatenbank in Datei speichern
Hallo,
ich bedanke mich erstmal für die zahlreichen Antworten. Es handelt sich hier um Tabellen,deren Inhalt von der einen in die andere mysql-Datenbank übertragen werden sollen. Die Tabellenspalten sind auch schon vorhanden. Ich werde mir mal mysqldump etwas näher anschauen,bisher habe ich mit solchen Dingen noch nicht gearbeitet. Zitat:
Und in etwa so wie in deinem Beispiel,habe ich mir die Umsetzung vorgestellt. In Delphi müßte ich mir dann eine Routine schreiben,die dann die Datensätze Zeile für Zeile durchläuft und dann in die neue Tabelle einträgt,richtig? Gruß AnfängerDelphi |
AW: Mysqldatenbank in Datei speichern
Mein zweites Beispiel ist MySQL-Syntax.
Wenn die Zieldatenbank die Quelldatenbank kennt, musst Du nur dieses Statement (an Deine Belange) angepasst ausführen. Da ist dann kein Programmieren erforderlich, sondern nur das Ausführen dieses Einzeilers. Ansonsten: ![]() MySQLDump: ![]() |
AW: Mysqldatenbank in Datei speichern
DBLinks gelten nur innerhalb der gleichen Instance.
Für "entfernte" DB gäbe es sonst noch die Möglichkeit, Replikation zu verwenden. Dazu müssen sich die Server natürlich irgendwie sehen können. Bei schlappen 8000 DS ist eine clientseitige Lösung wohl auch machbar (mit etwas Programmieraufwand). Bei eher einmaliger, administrativer Durchführung der Aufgabe sollte man sich das Programmieren sparen und ein Export/Import Tool einsetzen. Handgestrikte SQL Exporte in Form von Insertstatements können "tückisch" sein, wenn man Encoding und Escaping nicht berücksichtigt wird. |
AW: Mysqldatenbank in Datei speichern
Zitat:
no risk no Fun:mrgreen: Gruß K-H |
AW: Mysqldatenbank in Datei speichern
Zitat:
|
AW: Mysqldatenbank in Datei speichern
Wenn man keine Lust auf die MySQL Kommandozeilen-Tools hat, bietet sich auch ein Blick auf die MySQL Workbench an. Kann man auf der MySQL Webseite runterladen. Dann kann man sich die Kommandozeilen-Parameter zusammenklicken.
|
AW: Mysqldatenbank in Datei speichern
Hallo,
ich werde es in den nächsten Tagen mit den sql-Befehl von nahpets ausprobieren. Mal sehen wie weit ich komme. Die Datenbanken liegen ja auf dem gleichen Server. Die Idee von mquadrat, Zitat:
Schaue ich mir auch mal genauer an. Gruß AnfängerDelphi |
AW: Mysqldatenbank in Datei speichern
Hallo an alle,
ich habe mich mal ein bißchen näher mit der Mysql-Dokumentation beschäftigt und sogar eine passende Anweisung gefunden. Der Tip von nahpets war schon sehr gut.
Code:
richtig sieht es so aus:
insert Spalte11, ..., SpalteN into tabelle select Spalte1, ..., SpalteN from NameDerAnderenDatenbank.Tabelle Where ... soweit erforderlich
Code:
Da ich aber eigene Werte und ausgelesene Werte in die neue Datenbank übertrage,habe ich die Anweisung etwas umgebaut.
INSERT INTO Datenbank2.Tabelle3 (Spalte1,Spalte2...)
SELECT Spalte1,Spalte2... FROM Datenbank1.Tabelle5;
Code:
Das Programm Mysql-Workbench ist doch sehr hilfreich zum erstellen einer Mysql-Anweisung.
INSERT INTO Datenbank2.Tabelle3 (Spalte1,Spalte2...)
VALUES (eigener Wert2,(SELECT Spalte10 FROM Datenbank1.Tabelle5),eigener Wert2,...usw); Ich kann aber immer nur einen Datensatz schreiben,wenn ich meine Anweisung ausführe. Das würde bedeuten,ich müßte über ca. 8000 mal klicken. Also komme ich nicht herum mir in Delphi eine Schleife zu schreiben und zuvor mit SELECT COUNT(*) FROM muß ich noch die Anzahl der Datensätze holen. Sehe ich das richtig,oder gibt es noch einen andere Möglichkeit? Gruß AnfängerDelphi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz