Aus einer Access-DB eine SQL-DB erstellen (Beispiel:
Bücherei)
Voraussetzungen:
Access-Datenbank (ich habe noch die Version Office 2000) auf PC
(Windows XP oder Vista)
Ein PC mit Windows XP oder Vista mit XAMP
Webspace (ich habe 1und1) mit MySQL-Datenbank
Ziel:
Die Access-DB hat folgenden Aufbau:
Gebietstabelle mit den Feldern Gebietsnummer und Gebietsbeschreibung:
Buchtabelle mit den Feldern : laufende Nummer, Gebietsnummer (mit der
Gebietsnummer der Gebietstabelle verknüpft), Buchtitel, wo
(Schranknummer), Erscheinungsjahr, Autor (die weiteren Felder wie
Kaufdatum, Preis etc. sind für die Übernahme auf die
MySQL-DB
ohne Belang und werden also nicht übernommen
Die einzelnen Tabellen werden separat übernommen.
1. Aus Access-DB mehrere Excel-Tabellen erstellen, also eine Tabelle
Gebiete und mindestens eine Tabelle buecher.
Wenn die Ausgangstabelle mehr Felder hat als man übernehmen
will,
ist es am einfachsten, diejenigen Felder zu markieren und zu kopieren
und daraus eine neue Excel-Tabelle zu machen, in unserem Beispiel also
nur die 6 Felder.
2. Aus den jeweiligen Excel-Tabellen jeweils einen CSV-Export machen
(also <Speichern unter> und als Dateityp CSV
(Trennzeichen
getrennt angeben).
3. Die erhaltene CSV-Datei in das Verzeichnis von XAMP kopieren (in
meinem Fall: C:\XAMP\mysql\data\buecherei)
4. XAMP starten (siehe hierzu auch die Doku
http://www.heinz-wember.de/MySQL/import_SQL_DB.html#XAMPP)
Wenn es beim Starten Probleme gibt, dass sich z.B. der SQL-Server nicht
starten lässt, nachschauen, ob dieser Dienst bereits gestartet
ist: <Start> <Systemsteuerung>
<Verwaltung>
<Dienste> Name des Dienstes MySQL
5. In der mysql-localhost die Struktur der Tabelle anlegen, also z.B.
CREATE TABLE `bkw` (
`knr` varchar(11) character set latin1 collate
latin1_german1_ci default NULL,
`gnr` int(2) default NULL,
`titel` varchar(50) character set latin1 collate
latin1_german1_ci default NULL,
`wo` varchar(4) character set latin1 collate
latin1_german1_ci default NULL,
`jahr` double default NULL,
`autor` varchar(20) character set latin1 collate
latin1_german1_ci default NULL,
KEY `GNR` (`gnr`),
KEY `TITEL` (`titel`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
6. Import der csv-Datei mit dem Befehl: LOAD DATA INFILE
'wanderfuehrer.csv' into TABLE bkw FIELDS TERMINATED BY ';';
Damit sollten alle Sätze nun in der local-DB vorhanden sein
7. Die Tabelle einschließlich Daten auf localhost exportieren
damit wird eine Bildschirmdatei erstellt
8. Den Teil beginnend mit Create ... einschließlich der Daten
markieren und kopieren
9. Über das Administratormenü von 1und1 die
Internet-Domain aufrufen, Punkt MySQL Datenbank
10. Den Menüpunkt SQL aufrufen und die markierte
Datei von 8. einfugen und den Befehl ausführen
(<ok>)
damit sollten alle Sätze importiert sein.
Dasselbe auch mit der Gebietstabelle machen.
Nun die Tabellen "verschönern" (Anwendung der Normalformen,
also
schauen, ob der Primärschlüssel da ist etc.), Nicht
brauchbare Sätze (z.B. der Überschriftsatz) entfernen.
Wenn man, wie ich es mache, nur von Zeit zu Zeit eine neue MySQL-DB
erstellen will und nicht vorhat, online die neu erstellten Tabellen
abzuändern, kann man sich das Feld mit
denPrimärschlüssel auch sparen, es sei denn, die
Ursprungstabelle enthielt bereits so ein Feld mit
Primärschlüssel.
anderes Beispiel aus
Internet (Okt-2020)
LOAD
DATA INFILE './c24_gambio_shopware/apload/Bentley.csv' INTO TABLE
`products_xsell`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
angepasst auf Kontenrahmen LOAD
DATA INFILE 'kr.csv' INTO TABLE `kontenrahmen`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
Dateninput Beispiel: (erstellt mit Winvi32, Datencode utf8)
die Input-Daten stehen im Verzeichnis: xampp/mysql/data/dietervoigt
Achtung: wenn man das Komma als Fieldseparator nimmt, dann darf
natürlich das Komma nicht im Text für das Feld vorkommen,
siehe Fehler 4. Satz
Will man auch das Komma in der alphhumerischen Feldern zulassen, muss
man sich beim Exportieren/Importieren ein anderes Zeichen als
fieldseparator aussuchen
Damit man später auch damit arbeiten kann, muss man, wie oben
erwähnt, der Tabelle ein Feld id geben mit
Primärschlüssel und auto-incremement