php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.06.2006, 15:52  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 52
Transmitter
Standard Konvertieren von Datenbanken

Hi,

ich muss aus eine bestehenden Datenbank, viele verschiedene Datensätze übernehmen.

Die Datenbank ist nicht sonderlich professionell erstellt, es existiert kein ERD und DATE Werte sind in einem VARCHAR Feld gespeichert - ihr könnt euch das Ausmaß sicher vorstellen.

Nun ist das neue Design fast fertig und die Daten sollen importiert werden.
Soll / muss ich das Skript selbst schreiben, oder gibt es da einen Geheimtipp der mir etwas bis viel Arbeit abnimmt?

Danke schon mal
Bye, Transmitter
Transmitter ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.06.2006, 21:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

ERD?

Die Konvertierung musst du schon selbst machen, Wandlungen von VARCHAR nach DATE findest du aber sicher in Google oder dem MySQL-Handbuch.
Zergling-new ist offline   Mit Zitat antworten
Alt 30.06.2006, 21:52  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 52
Transmitter
Standard

Entity Relationship Diagramm .. findest du auch bei Google

Ok, wie es geht ist mir klar .. dachte nur da gäbe es ein schickes Tool für
Transmitter ist offline   Mit Zitat antworten
Alt 30.06.2006, 21:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Schickes Tool für Datenbank Konvertierung...findest du auch bei Google

Naja bin zu Recht kein MySQL-Moderator hier

Aber werd doch mal konkret, was für Daten du wohin konvertieren willst, letztlich sind so einmal Sachen doch halbwegs schnell gemacht..
Zergling-new ist offline   Mit Zitat antworten
Alt 30.06.2006, 22:00  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 52
Transmitter
Standard

Habe nur was zur Portierung bzw. Migration auf differierende Umgebungen gefunden.

Ich habe z.B. sowas: 27.05.2003, das soll 2003-05-27 werden.
Das ist ja leicht mit explode by .
Aber das muss natürlich immer an andere Stellen bzw. Spalten usw., deswegen wollte ich immer in einem Rutsch den kompletten Tabellen Dump traversieren und dabei eben die Arrays und die Arrays in den Arrays sortieren.

Ist-Zustand:
Code:
INSERT INTO tabelle VALUES (528, 47, '8.59', 31, '27.06.2004');
Soll-Zustand:
Code:
INSERT INTO tabelle VALUES (528, 47, '2004.06.27', '8.59', 31);
So in der Art.
Transmitter ist offline   Mit Zitat antworten
Alt 30.06.2006, 22:37  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://dev.mysql.com/doc/refman/5.0/...rt-select.html

Die Spalten-Anordnung kannst du ja beliebig variieren und dein neues Datums-Format sieht hoffentlich nicht so aus wie von dir angegeben YYYY.MM.DD

Da kannst du dir mit CONCAT und SUBSTRING sicher was zusammenpfrimeln um von DD.MM.YYYY auf YYYY-MM-DD zu kommen.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.07.2006, 20:57  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Zitat:
Zitat von Transmitter
Ist-Zustand:
Code:
INSERT INTO tabelle VALUES (528, 47, '8.59', 31, '27.06.2004');
Soll-Zustand:
Code:
INSERT INTO tabelle VALUES (528, 47, '2004.06.27', '8.59', 31);
So in der Art.
Nö, dein Sollzustand sollte eher so aussehen
Code:
INSERT INTO tabelle VALUES (528, 47, '2004-06-27', 8.59, 31);
Sehen wir uns also die Struktur der alten Tabelle "vontab" an.
Code:
CREATE TABLE `vontab` (
`feld1` INT NOT NULL ,
`feld2` INT NOT NULL ,
`feld3` VARCHAR( 5 ) NOT NULL ,
`feld4` INT NOT NULL ,
`feld5` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;
Dann erstellen wir die Struktur der neuen Tabelle "zutab"
Code:
CREATE TABLE `zutab` (
`feld1` INT NOT NULL ,
`feld2` INT NOT NULL ,
`feld3` DATE NOT NULL ,
`feld4` DECIMAL( 5, 2 ) NOT NULL ,
`feld5` INT NOT NULL
) ENGINE = MYISAM ;
Damit hast du schonmal die besten Voraussetzungen und das ganze ist mit einem Befehl erledigt.

Code:
INSERT INTO 
  zutab
SELECT 
  feld1, 
  feld2, 
  CONCAT(RIGHT(feld5,4) , '-', SUBSTR(feld5,4,2), '-', LEFT(feld5,2)), 
  feld3, 
  feld4
FROM 
  `vontab`
Fertig ist die Kiste.
DiBo33 ist offline   Mit Zitat antworten
Alt 02.07.2006, 11:30  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 52
Transmitter
Standard

Ja, das funktioniert so.

Habt ihr auch eine Idee, wie ich das mache, wenn ich von einer in 2 Tabellen schreiben muss?

Z.B. von Mitarbeiter, in der Rechte, Benutzername und Passwort gespeichert wurden müssen die Daten jetzt in eine Benutzer und eine Rechte Tabelle.
In der Rechte Tabelle existiert der Forein Key BenutzerID, ergo muss erst der Datensatz für den Benutzer angelegt werden, dann der Datensatz für die Rechte mit der BenutzerID.

Das übersteigt meine SQL Kompetenzen, funktioniert sowas in SQL?
Transmitter ist offline   Mit Zitat antworten
Alt 02.07.2006, 12:21  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Die Benutzer-ID kennst du doch schon aus der Ursprungs-Tabelle. Dann musst du eben einfach zwei INSERTs durchführen, für die Benutzer- und für die Rechte-Tabelle.
Zergling-new ist offline   Mit Zitat antworten
Alt 02.07.2006, 21:49  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Nur mal so als Anmerkung: Wenn es darum geht, kuriose Formate in das DATE-Format zu konvertieren, kennt MySQL die Funktion STR_TO_DATE().
xabbuh ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zwei Datenbanken gegenseitig überprüfen FleyerShaver Datenbanken 5 28.06.2007 23:36
Datenbanken von Windows zu Linux ApfeL Server, Hosting und Workstations 1 12.04.2006 20:31
SELECT über mehrere Datenbanken? Transmitter Datenbanken 10 29.01.2006 13:30
Mysql Datenbanken verknüpfen oder so +g+ PHP Tipps 2005-2 3 29.10.2005 15:36
Eine Datenbank - Viele Tabellen oder mehrere Datenbanken? nicobischof Datenbanken 3 20.10.2005 15:36
mysqlabfrage aus 2 datenbanken PHP Tipps 2005-2 3 06.10.2005 14:54
Zwei Datenbanken auslesen PHP Tipps 2005-2 5 09.08.2005 17:05
Andere Datenbanken als MySQL PHP Tipps 2005-2 3 15.07.2005 14:05
mehrere Datenbanken oder lieber nur eine die... Crypi Datenbanken 2 09.07.2005 12:03
[Erledigt] MSSQL Datenbanken auslesen Off-Topic Diskussionen 4 01.06.2005 00:41
[Erledigt] Mehrere Datenbanken auf verschiedenen Servern Datenbanken 2 15.05.2005 22:28
PHP und MySQL Datenbanken GELight Datenbanken 3 25.12.2004 09:56
fgetcsv und Datum konvertieren PHP Tipps 2004 0 28.09.2004 11:40
Mehrere Datenbanken ansprechen PHP-Fortgeschrittene 8 14.09.2004 20:56
Alle Datenbanken und Tabellen anzeigen anzeigen imported_Lumio PHP Tipps 2004 4 13.09.2004 14:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
konvertieren von datenbanken, entity relationship diagramme umwandeln

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.