zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Datenbakn in andere kopieren, wenn Anzahl der Tabellen unbekannt

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 12.09.2008, 13:30
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 Datenbakn in andere kopieren, wenn Anzahl der Tabellen unbekannt

Hallo!

Ich hatte in einer alten Version meines CMS 2 Datenbanken mit identischen Tabellen. Dadurch habe ich eine strenge Trennnung erreicht. Der Redakteur sollte auf der einen Datenbank arbeiten, während der Besucher die Website mit den Inhalten der anderen sehen konnte. Ein Admin konnte dann auf Knopfdruck die Tabellen der öffentlichen Datanbank leeren und die Werte der redaktionellen DB Tabellen dort eintragen lassen. Dabei wurde die Website kurzfristig in den Wartungsmodus geschickt.

Seit ich aber das System um die Möglichkeiten mehrere Sprachen und mehrere Design-Templates zu verwalten erweitert habe, wird das schwierig. In einem Projekt laufen 13 Templates in 4 Sprachen (132 Tabellen) in einem anderen 2 Templates und 2 Sprachen, das System hat jetzt also keine bestimmte Anzahl von Tabellen mehr.

Ich möchte gerne ein script entwickeln, das auf die redaktionelle DB zugreift, diese Ausliest, die öffentlichen Tabellen leert, und - egal was da ist - die redaktionellen Tabellen in die öffentlichen kopiert.

Bisher war das recht einfach und ich könnte das auch mit einer konfig lösen.
Mir wäre aber lieber das zu automatisieren.

Wie könnte ich das lösen?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 12.09.2008, 13:40
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

Naja, mit "SHOW TABLES" kannst Du Dir die Tabellen einer Datenbank auflisten lassen und mit "EXPLAIN `tabellen_name`" kannst Du Dir Informationen über die Spalten holen.

Die Befehle, um Tabellen zu erstellen/bearbeiten/löschen dürften ja bekannt sein.

Weiß jetzt leider nicht genau, wo das Problem liegt, außer, dass es evtl. viel Arbeit ist.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 12.09.2008, 14: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

Geht mir mehr ums sinnvolle "wie".
Mit Zitat antworten
  #4 (permalink)  
Alt 12.09.2008, 14:14
Benutzerbild von Curtains
(Schlafen||Programmieren)
XHTMLforum-Mitglied
 
Registriert seit: 27.08.2008
Beiträge: 198
Curtains befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von paracelsus Beitrag anzeigen
In einem Projekt laufen 13 Templates in 4 Sprachen (132 Tabellen) in einem anderen 2 Templates und 2 Sprachen, das System hat jetzt also keine bestimmte Anzahl von Tabellen mehr.
Hallo paracelsus

Aber die DB-Struktur ist bei beiden DBs die gleiche? Mit "keine bestimmte Anzahl von Tabellen" meinst du nur die Datensätze?
Mit Zitat antworten
  #5 (permalink)  
Alt 12.09.2008, 15:40
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

Ich meine Tabellen. Ich muss die Db mit dem/den Templates natürlich aufbauen, die Anzahl wird dann bestimmt von der Anzahl der Templates, den darin vorhandenen Navigationen und den Sprachen die verwendet werden.

Deshalb verbeiße ich mich in einen Automatismus, um mir noch mehr Arbeit zu ersparen - was ja der Sinn eines CMS sein soll.

Um Diskussionen vorzubeugen:
Mein System wurde geschaffen im Zuge der Planung eines Jugendprojektes. Worum es da genau geht will ich noch nicht allzu sehr raushängen, da grade ein Verfahren zum rechtlichen Schutz dafür läuft (teuer ).
Sinn des ganzen ist, das ich mit 2 DB eine sehr strikte Trennung bewirken kann, da nur der Admin (also ich und die zuständigen Lehrer) die überarbeitete Seite veröffentlichen kann. Es handelt sich dabei um Kinder der 8 Stufe - also pupertären Halbstarken und ziemlich ungenierte Zicken (nein - ich mag Kinder/Halberwachsene sogar sehr, deshalb erlaube ich mir diese Beurteilung), wer weiß was denen so einfällt wenn sie freie Hand kriegen?
Mit Zitat antworten
  #6 (permalink)  
Alt 12.09.2008, 16:05
Benutzerbild von Curtains
(Schlafen||Programmieren)
XHTMLforum-Mitglied
 
Registriert seit: 27.08.2008
Beiträge: 198
Curtains befindet sich auf einem aufstrebenden Ast
Standard

Mit "DB-Struktur" meine ich die Struktur der einzelnen Tabellen (Anzahl Spalten, Feldnamen, Feldtypen, Indizes, ...)
Oder anders ausgedrückt: Wenn bei jeder Tabelle ein 'TRUNCATE' ausgeführt wird, bleiben dann zwei (strukturell) identische Datenbanken übrig?

Falls es nämlich strukturelle Unterschiede zwischen den beiden Datenbanken gibt, dann wird eine Datenmigration um einiges aufwändiger.

Daher mein erster Tip: Schaffe eine strukturelle Einheit zwischen den DBs.

Geändert von Curtains (12.09.2008 um 16:09 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 12.09.2008, 16:35
Benutzerbild von Curtains
(Schlafen||Programmieren)
XHTMLforum-Mitglied
 
Registriert seit: 27.08.2008
Beiträge: 198
Curtains befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von paracelsus Beitrag anzeigen
In einem Projekt laufen 13 Templates in 4 Sprachen (132 Tabellen) in einem anderen 2 Templates und 2 Sprachen, das System hat jetzt also keine bestimmte Anzahl von Tabellen mehr.
Eine dumme Frage ... mit '132 Tabellen' meinst du schon 132 Datensätze und nicht etwa 132 verschiedene 'CREATE TABLE' ?
Mit Zitat antworten
  #8 (permalink)  
Alt 12.09.2008, 21:09
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

Dumme Fragen fibt es nicht, nur dumme Antworten.
Ja, ich meine 132 Tabellen in einer DB. Schlimm? Das ist einfach so passiert, da ich immer bei jedem Ausbau die alte Struktur mitgeschleppt habe. Da jedes Template eine völlig andere Navígationsstruktur und anderen Inhalt als das haupttemplate haben kann, ging es nicht anders. Allerdings gibt es natürlich die Möglichkeit mehrere Templates mit ein und demselben Inhalt zu verwalten, dann sind es rund 18 Tabellen. Das heißt, wenn ein Template in einer Sprache aktiv ist, wird auch nur auf die zugehörigen Tabellen zugegriffen - aber das ist logisch.

natürlich ist die Struktur der beiden Datenbanken völlig identisch.

BTT: @Mantiz: Ich habe es noch nicht versucht, aber mal im Inet gesucht. Wenn Di Verbindung steht, reicht ein einfaches:
PHP-Code:
$sql "SHOW TABLES";
$erg mysql_query($sql);
while (
$row mysql_fetch_array($erg)) {
   echo 
$row[0];

ist das korrekt?

Geändert von paracelsus (12.09.2008 um 21:11 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 12.09.2008, 22:55
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

Sorry, bin leider erst gerade wieder nach Hause gekommen. :-/

Ja, so erhälst Du eine Liste der Tabellen der aktuell gewählten Datenbank. Mit dieser Liste könntest Du jetzt daher gehen und z.B. die Struktur auslesen (EXPLAIN TABLE) und diese Struktur dann übertragen.
Ich habe das in dem Zusammenhang gepostet, dass ich annahm, dass die redaktionelle Datenbank evtl. Tabellen haben könnte, die in der öffentlichen Datenbank noch nicht existieren, in dem Fall müssten die Tabellen natürlich erstmal angelegt werden.

Wenn die Strutktur sowieso die gleiche ist, dann reicht es ja die entsprechenden Tabelle zu leeren und die neuen Datensätze einzufügen. Aber auch hier könnte man ein Export/Import-Script schreiben, welches einfach alle Tabelle ausliest, diese exportiert, so dass man auf Import-Seite nur noch ein SQL-Script hat, welches man laufen lassen muss.

Oder hab' ich Dich evtl. falsch verstanden?
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 12.09.2008, 23:39
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

Nein, Du hast richtig verstanden.
Ich stelle mir das so vor:
Ich lese wie oben aus, und setze dann innerhalb der while ein weiteres Statement ab:
Code:
INSERT  INTO 'Tabelle in der öffentlichen DB' 
SELECT  * 
FROM  `Tabelle in der redaktionellen DB` ;
Nur macht mir im Moment - alles noch Theorie - die zweite mysql Verbindung Sorgen.

Ich starte am Anfang des scriptes mit einem Funktionsaufruf (nein keine Klasse ) connect(1); die Verbindung zur redaktionellen. Nun bräuchte ich aber innerhalb der while auch eine weitere Verbindung. Oder ich lade alles im Ablauf in ein Array (das kann aber riesig werden) und lass dann noch ein foreach unter der anderen Verbindung über dieses laufen.

Hmmmm.
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
Redesign für Steiner Cycling Team pkipper Site- und Layoutcheck 11 09.02.2011 13:25
Eine DB.Tabelle in eine andere DB.Tabelle kopieren paracelsus Serveradministration und serverseitige Scripte 14 23.10.2007 18:47
Tabellen oder andere Art der Darstellung? badfish CSS 0 15.11.2006 16:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:05 Uhr.