| 
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.
|
 |