Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Mysqldatenbank in Datei speichern (https://www.delphipraxis.net/191968-mysqldatenbank-datei-speichern.html)

AnfängerDelphi 8. Mär 2017 21:57

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

p80286 8. Mär 2017 22:42

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

nahpets 8. Mär 2017 23:12

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

CCRDude 9. Mär 2017 07:44

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 mysqldump (das kann auch CSV oder XML statt SQL-Statements, aber wofür???). Den generierten Export (wenn als SQL-Statements exportiert) kannsr Du dann ja direkt als input wieder an mysql pipen.

stifflersmom 9. Mär 2017 08:43

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.

AnfängerDelphi 9. Mär 2017 17:21

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:

von nahpets:
Kennt MySQL Datenbanklinks?
Das weiß ich nicht,wie finde ich das heraus?
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

nahpets 9. Mär 2017 18:27

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: MySQL Documentation

MySQLDump: Search Results - Dump - MySQL 8.0 Reference Manual

jobo 10. Mär 2017 07:01

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.

p80286 10. Mär 2017 11:33

AW: Mysqldatenbank in Datei speichern
 
Zitat:

Zitat von jobo (Beitrag 1363705)
Handgestrikte SQL Exporte in Form von Insertstatements können "tückisch" sein, wenn man Encoding und Escaping nicht berücksichtigt wird.

:mrgreen:

no risk no Fun:mrgreen:

Gruß
K-H

jobo 10. Mär 2017 14:29

AW: Mysqldatenbank in Datei speichern
 
Zitat:

Zitat von p80286 (Beitrag 1363726)

no risk no Fun:mrgreen:

Ja! Gefördert von Ihrer Agentur für (Mehr)Arbeit!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz