zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Eine DB.Tabelle in eine andere DB.Tabelle kopieren

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 18.10.2007, 13:55
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard Eine DB.Tabelle in eine andere DB.Tabelle kopieren

Hi, gleich die nächste Frage

Ich bin dabei, eine äusserst umständlich Routine zu bauen, um eine DB in eine andere gleicher Struktur zu kopieren, oder zumindest Teile davon.

Konkret:
Es gibt eine öffentliche DB und eine redaktionelle - die wird über das Backend bearbeitet und aktualisiert.
Nach Abschluss aller Arbeiten, soll eine Funktion ausgelöst werden, die oben beschriebenes macht.

Ich wäre es so angegangen:
alte Tabelle Leeren, neue auslesen - Insert in alte => Zeile für Zeile.
Dann Optmimize Tabelle für Tabelle.

In phpmyAdmin habe ich grade so einen Kopiervorgang gemacht und sehe nun folgenden Befehl:
PHP-Code:
'INSERT INTO db1.Tabelle SELECT * FROM db2.Tabelle' 
Da ich mit meiner Umständlichen Lösung schon weit bin, frage ich lieber hier,
bevor ich gleich was neues teste.

Fragen hiezu:
Im Backend habe ich eine Verbindung zu DB2 offen. Ich nehme an das - wie in meiner Lösung - auch eine Verbindung zu DB1 stehen muss, wenn ich mit so einem einfachen sql Statement arbeite - eigentlich logisch?

Ist dieser Befehl alles was ich brauche - so einfach?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 18.10.2007, 14:33
lässt grüßen
XHTMLforum-Mitglied
 
Registriert seit: 09.10.2007
Ort: Berlin
Beiträge: 189
code_junkie wird schon bald berühmt werden
Standard

Von MySQL-Querys bin ich auch oft überrascht.

Zur Verbindung: insofern der Datenbankbenutzer Zugriff auf db1 und db2 hat, reicht ein Verbindungsaufbau. Andersum gefragt, kann man überhaupt zwei Verbindungen aufbauen (welche dann z.B. in $resource1 & $resource2 sind) und dann eine Query absetzen, welche beide Verbindungskennungen verwendet? Geht doch gar nicht, oder doch?

Gruß
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 18.10.2007, 16:22
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Zitat:
Zitat von code_junkie Beitrag anzeigen
Von MySQL-Querys bin ich auch oft überrascht.

Zur Verbindung: insofern der Datenbankbenutzer Zugriff auf db1 und db2 hat, reicht ein Verbindungsaufbau. Andersum gefragt, kann man überhaupt zwei Verbindungen aufbauen (welche dann z.B. in $resource1 & $resource2 sind) und dann eine Query absetzen, welche beide Verbindungskennungen verwendet? Geht doch gar nicht, oder doch?

Gruß
Ich bin mir da nicht sicher, aber werde mir nun doch ein Testcase basteln.
Ich dachte nur, da man die DB ja beim Verbindungsaufbau angeben muss (mysql_select_db), das ich dann nur dahin verbunden sei.

Wenn es so klappt, dann erspar ich mir ja ewig Zeit und - Laufzeit.
Mit Zitat antworten
  #4 (permalink)  
Alt 23.10.2007, 09:48
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Gut, ich pushe mal wegen aktueller Problemstellung:

Leute ich hab keine Ahnung von Verbindungs-Klassen, aber genau das werde ich nun brauchen.
AUf dem Hoster wo mein aktuelles Zeug hinkommt, ist es NICHT möglich 2 Datenbanken mit einem Userzugeng zu haben!

Heisst ich habe 2 verschiedene Passwd und Username´s!
Ds haut natürlich die Struktur meines Redaktionssystems etwas durcheinander.

Problemstellung:
Die Seite wird aufgerufen, eine Funktion checkt ob GET mitgeliefert werden, wenn nicht, wird eine Funktion gestossen, die den erstgereihten Eintrag des Hauptmenüs ausliest, die dort gespeicherten Parameter in GET umbaut, und damit die Seite erneut aufruft.
Dies kann von 2 Stellen aus geschehen: Öffentlich - wie grade beschreibt, oder aus dem RS im Vorschau modus. In diesem Mode wird ein weiterer Get mitgliefert, der die o.a. Funktion anweist, die 2 DB anzuwählen (das ist die Redaktionelle). Das lässt sich noch relative einfach lösen, mit 2 unterschiedlichen Zugängen. Kern der Sache ist, das die Redakteure hinten alles ändern können, die Seite vorne aber unverändert bleibt. Ist alles angepasst wird die Update Funktion ausgelöst und die hintere DB in die vordere kopiert - wie obe beschrieben.

Wie kann ich das nun lösen, wenn ich 2 verschiedene Zugänge hab?
Muss ich nun ernsthaft einmal alles auslesen, Verbindung schliessen, neue aufmachen und dann reinlesen? Schauder.

Dank euch!
Mit Zitat antworten
  #5 (permalink)  
Alt 23.10.2007, 10:50
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Ich hab ehrlich gesagt noch nie mit mehr als einer DB in einem Projekt gearbeitet, darum kann ich dir da wenig zu sagen.

Bei meiner alten Firma wurde der öffentliche und der Redaktionsbereich nicht "richtig" getrennt, also nicht in verschiedenen DB oder Tabellen vorgehalten, sondern über ein Flag gekennzeichnet was öffentlich ist und was nicht.
Das hilft dir bei deinem aktuellen Problem nicht, es ist aber eine alternative Vorgehensweise.
Mit Zitat antworten
  #6 (permalink)  
Alt 23.10.2007, 12:01
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Zitat:
Zitat von inta Beitrag anzeigen
Ich hab ehrlich gesagt noch nie mit mehr als einer DB in einem Projekt gearbeitet, darum kann ich dir da wenig zu sagen.

Bei meiner alten Firma wurde der öffentliche und der Redaktionsbereich nicht "richtig" getrennt, also nicht in verschiedenen DB oder Tabellen vorgehalten, sondern über ein Flag gekennzeichnet was öffentlich ist und was nicht.
Das hilft dir bei deinem aktuellen Problem nicht, es ist aber eine alternative Vorgehensweise.
Jein, ist sicher eine gute Variante, ich aber wollte von Anfang an eine Stricte Trennung. Das Redaktionssystem wird in Bälde bei einem Jugentprojekt eingesetzt, das ich in Zusammenarbeit mit der Landesregierung aufbauen werde, d.h. da werkeln dann Kinder drauf rum. Wenn sich "hinten" dann was zerschiesst, bleibt es vorne gut und geh ich mit Master Passwort rein und biege es wieder grade.
Wäre vlt. auch mit Flags gegangen, aber so ist es fast 100% gesichert.

Das Problem allerdings brennt, da ich die Sachlage von dem Gemeinde Hoster erst heute erfuhr ... das Projekt muss raus.
Mit Zitat antworten
  #7 (permalink)  
Alt 23.10.2007, 12:50
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

Zitat:
Zitat von paracelsus Beitrag anzeigen
Muss ich nun ernsthaft einmal alles auslesen, Verbindung schliessen, neue aufmachen und dann reinlesen? Schauder.
Ich sehe keine Alternative.

Wie soll es auch anders gehen, wenn du nur eine DB-Verbindung gleichzeitig geöffnet haben kannst?

Ich würde aber auch lieber alles in eine DB packen und die entsprechenden DB-Schreib-Rechte mittels Userstatus vergeben.
z.B. if ($Userlevel == "Redakteur") { $table_prefix="redaktion"; }
sofern sich das so bei dir lösen läßt.

Damit hast du eine klare Trennung der Tabellen-Zugriffe anhand des eingeloggten Users.
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)
Mit Zitat antworten
  #8 (permalink)  
Alt 23.10.2007, 12:53
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Beiträge: 5.345
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Um nochmal auf das Problem mit dem zwei verbindungen einzugehen.

Bei deinem Testcase wie bist du da vorgegangen. Ich hab mir da gedanken gemacht und würde es ungefähr so machen:

PHP-Code:
$connection_1 mysql_connect('localhost','user1','pw1');
$connection_2 mysql_connect('localhost','user2','pw2');

$datenbank_1 mysql_select_db('db1',$connection_1);
$datenbank_2 mysql_select_db('db2',$connection_2);

$query_1 mysql_query('SELECT * FROM `News` ORDER BY `ID` DESC',$connection_1);
$query_2 mysql_query('SELECT * FROM `News` ORDER BY `ID` DESC',$connection_2); 
Ich weiss selbst, das die Querys scheiße sind, aber das ist ja nur zur verdeutlichung. Das man immer die Verbindung angeben muss und somit auch die Db in die man was Insern (o.ä.) machen will. (Dummer Satz)

Gruß
Timo
__________________
Um weitere Erklärungen eingeblendet zu bekommen, drücken Sie bitte die Tastenkombination Alt + F4
Mit Zitat antworten
  #9 (permalink)  
Alt 23.10.2007, 13:43
Benutzerbild von paracelsus
be simple
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 16.07.2007
Ort: Kapfenberg - Austria, einige meinen am "Anus Mundi"
Beiträge: 4.788
paracelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nettparacelsus ist einfach richtig nett
Standard

Ja, wie hab ich es gemacht, einfach so wie oben beschrieben, wie ich es über phpMyAdmin gesehen hab.
Läuft. Local.

Aber ich habe alle anderen Provider gecheckt, wo ich schon Werke liegen hab.
Ich hab das total verschlafen, ich hab ja vorher auch noch nie 2 DB verwendet, ich habe überall separate Zugänge.
Sch.... .
Nun darf ich mich damit auseinandersetzen.
T1mo, danke für Deinen Tipp, ob es werkelt werden wir bald wissen.
Der Logik nach müsste es gehen.

cu
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 23.10.2007, 15:04
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Es gibt auch noch erweiterte Inserts oder wie die heißen.

Da werden in einem Insert-Statement gleich mehrere Datensätze eingefügt. Im Grunde würde das dann ähnlich Deiner jetztigen Variante ablaufen, also Datensätze aus der einen DB holen und in einer Schleife in die andere DB einfügen, jedoch nicht mehr Zeile für Zeile, sondern im Idealfall alle Datensätze einer Tabelle in einem Rutsch. Dürfte um einiges schneller sein, als jeden Datensatz einzeln einzufügen. Müsstest Dir nur das richtige Statement zusammenbauen. Wie das aussehen muss kannst Du Dir ja bei phpMyAdmin anschauen, wenn Du 'Exportieren' wählst.

Für den Fall, dass es dort eine Beschränkung gibt (was ich nicht weiß) könnte man so zumindest immer in einer Schleife z.B. 500 Datensätze auf einen Schlag einfügen und verringert so die Anzahl der Statements schonmal drastisch.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
hover spricht andere id's an f4k3 CSS 11 08.07.2010 17:33
eine grafik über andere legen keyboardY CSS 6 23.01.2010 18:53
[mod_rewrite] Auf andere Domain umleiten markuskoehler Serveradministration und serverseitige Scripte 3 01.07.2009 00:19
Datenbakn in andere kopieren, wenn Anzahl der Tabellen unbekannt paracelsus Serveradministration und serverseitige Scripte 26 15.09.2008 18:15
IE / Firefox der eine Ignoriert Margin der andere Padding?!? Frozensilence CSS 4 28.03.2006 16:23


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:43 Uhr.