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

Konto,Einnahmen,Konto,Ausgaben,Konto,
10000,Torzoll,20000,Personal der Stadt,,
10010,Zoll Wertachbrucker Tor,20010,Baumeister,30010,Baumeister
10011,antiquo thelonio,20011,Bürgermeister,30011,Bürgermeister
10012,frumento, novo,20012,Steuermeister,30020,Hauptmann

Output DB:



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

  zur Übersicht Dokumentationen ,  Homepage Heinz Wember  

Änderungsstand: 03-Okt-2020
Heinz Wember