AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mysqldatenbank in Datei speichern

Mysqldatenbank in Datei speichern

Ein Thema von AnfängerDelphi · begonnen am 8. Mär 2017 · letzter Beitrag vom 20. Mär 2017
Antwort Antwort
Seite 1 von 2  1 2   
AnfängerDelphi

Registriert seit: 20. Mai 2010
25 Beiträge
 
#1

Mysqldatenbank in Datei speichern

  Alt 8. Mär 2017, 22:57
Datenbank: Mysql • Version: 5.7 • Zugriff über: Delphi xe3
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Mysqldatenbank in Datei speichern

  Alt 8. Mär 2017, 23:42
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Mysqldatenbank in Datei speichern

  Alt 9. Mär 2017, 00:12
Kennt MySQL Datenbanklinks?

Wenn ja:

insert Spalte11, ..., SpalteN into tabelle select Spalte1, ..., SpalteN from Tabelle@Datenbanklink Where ... soweit erforderlich

Bin mir nicht sicher, vermutlich geht es so:

insert Spalte11, ..., SpalteN into tabelle select Spalte1, ..., SpalteN from NameDerAnderenDatenbank.Tabelle Where ... soweit erforderlich

Geändert von nahpets ( 9. Mär 2017 um 00:16 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Mysqldatenbank in Datei speichern

  Alt 9. Mär 2017, 08:44
Als Zwischendateiformat wäre selbstverständlich SQL das tauglichste

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.
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
370 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Mysqldatenbank in Datei speichern

  Alt 9. Mär 2017, 09:43
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.
  Mit Zitat antworten Zitat
AnfängerDelphi

Registriert seit: 20. Mai 2010
25 Beiträge
 
#6

AW: Mysqldatenbank in Datei speichern

  Alt 9. Mär 2017, 18:21
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Mysqldatenbank in Datei speichern

  Alt 9. Mär 2017, 19:27
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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Mysqldatenbank in Datei speichern

  Alt 10. Mär 2017, 08:01
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Mysqldatenbank in Datei speichern

  Alt 10. Mär 2017, 12:33
Handgestrikte SQL Exporte in Form von Insertstatements können "tückisch" sein, wenn man Encoding und Escaping nicht berücksichtigt wird.


no risk no Fun

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Mysqldatenbank in Datei speichern

  Alt 10. Mär 2017, 15:29

no risk no Fun
Ja! Gefördert von Ihrer Agentur für (Mehr)Arbeit!
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
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