Werbung einblenden Werbung ausblenden


Home / Tutorials / mysql Handbuch / Tabellen importieren
   


Daten aus einem Flatfile in Tabellen importieren

Daten aus einem Flatfile in Tabellen importieren

Auch wenn wir mit sql nur üben wollen, sehen wir uns mit dem üblichen Problem konfrontiert: Wir brauchen eine gut gefüllte Tabelle, um überhaupt irgend etwas üben zu können. Rebus sic stantibus werden wir jetzt also eine solche generieren. Wie man Datenbanken und Tabellen in mysql einrichtet, siehe mysql basics. Wir gehen davon aus, daß der mysql Server hochgefahren wurde, und dass die Datenbank testlauf ( einrichten mit c:\mysql\bin>mysqladmin create testlauf)



eingerichtet wurde. Anschliessend richten wir die Tabelle ein. Diese soll folgende Felder enthalten.
KundnNr int (5)
Name char (50)
Ort char (50)
Adresse char(200)
mail char(150)
Kategorie char(20)
Umsatz int(10)

Wir fahren also in unser neu eingerichte Datenbank (c:\mysql\bin>mysql testlauf), freuen uns darüber, dass mysql uns willkommen heisst



und setzen am prompt folgendes sql Statement ab.

create table testerone (KundenNr int(5) NOT NULL, Name char(50),Ort char(50),Adresse char(200),mail char(150),Kategorie char(20),Umsatz int(10), Primary Key(KundenNr));

Wem das zu anstrengend ist, der kann das auch als Batch Prozess, auch unter Windows laufen lassen. Hierzu nimmt man irgendeinen Texteditor (Wordpad, Notepad etc.) und schreibt in diesen folgende Zeilen.

use testlauf;
create table testerone (KundenNr int(5) NOT NULL, Name char(50),Ort char(50),Adresse char(200),mail char(150),Kategorie char(20),Umsatz int(10), Primary Key(KundenNr));

Dieses Programm speichert man dann in irgendeinem Ordner ab. Anschliessen geht man mit der Dos Box (Eingabeaufforderung) in diesem Ordner. Dort gibt man dann folgenden Befehl ein.

C:\cgi>c:\mysql\bin\mysql.exe < testo.sql

Es wird dann im Ordner testlauf die Tabelle testerone eingefügt, bestehend aus drei Dateien:testerone.MYD,testerone.MYI,testerone.frm. Zu finden in c:/mysql/data/testlauf.



Das ist, insbesondere bei größeren sql Statements, einfacher. Nun haben wir eine Datenbank und eine Tabelle. Damit wir aber mit dieser Tabelle was anfangen können, braucht sie noch Inhalt. Mittels eines insert Statements (insert into tabelle .....etc.) Einträge zu machen, ist hierbei zu umständlich. Einfacher ist es, wir schreiben eine Flatfile Datenbank und spulen die Daten dann mit LOAD DATA in die Datenbank. Das erste was wir brauchen, ist also ein Flatfile, der die Datensätze enthält, die wir in die mysql Datenbank spulen wollen. Den Flatfile mit den Daten kann man sich hier hier downloaden. Er hat folgendes Aussehen.

1 Peter Müller Berlin Am Hechtacker 12 mueller@wessnich.de business 30000
2 Erika Kunstig München Geibenstaig 13 kunstig@yahoo.de business 40000
3 Werner Sauerbier Freiburg Mooswaldalle 34 sauerbier@gmx.de business 4000
4 Maria Hopfendahl Berlin Kurfüstenstrasse 45 Hopf@hotmail.com consumer 5000
5 Heiner Müller Bremen Lichtergasse 12 heiner@mueller.com consumer 6000
6 Hans Kohl Düsseldorf Am Markt 45 hansiKohl@freenet.de consumer 70000
7 Werner Glottertal Coburg Am Fels 45 wernerglott@wessnich.de consumer 90000
8 Hans Lützelschwab Freiburg Am Hertweg 7 lützelschwab@freiburg.com business 20000
9 Peter Brueg Freiburg Reischstrasse 34 peter-brueg@freenet.de consumer 5000
10 Erika Lachfeld Freiburg Krozinger Strasse 12 erika_lachfeld@freiburg.net business 4000

Dann können wir mit diesem Befehl die Daten in die Datenbank einlesen.

mysql> load data local infile 'c:/mysql_handbuch/daten.txt' into table testerone;
Query OK, 10 rows affected (0.16 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 13
mysql>

Der Pfad zu der Datei daten.txt muss natürlich entsprechend angepasst werden. Bei der Pfadangabe ist der Slash (/) und nicht der Backslash (\) zu verwenden. Als Delimiter dient im default das Tab Zeichen, das Ende einer Zeile wird durch das Newline Zeichen \n signalisiert. In diesem Beispiel wird mit diesen default Werten gearbeitet. Wer nicht mit diesen Default Werten arbeiten will, kann dies änderen, indem er sowas macht.

mysql>Load data local infile 'c:/mysql_handbuch/daten.txt' into table testerone
->Fields terminated by 'irgendwas'
->Lines terminates by 'was_gefällt';

Nochmal den gesamten Ablauf in der Dos Box (Eingabeaufforderung).



Wir haben jetzt eine Datenbank und eine Tabelle mit Inhalt. Auf diese können wir nun komplexere sql statements anwenden. Diese Tabelle wird allen folgenden Kapiteln zugrunde liegen.

Sie hat folgendes Aussehen.

vorhergehendes Kapitel