CSV in MySQL einlesen
Wenn man größere Datenmengen in MySQL einlesen möchte, bietet sich ein CSV Import an – dieser scheint performanter als ein normales SQL Dump zu sein.
Allerdings bietet diese Form des Imports auch einige Tücken – hier ein paar Tipps wie man es zum Laufen bekommt:
Generelle Import Syntax
[code lang=“sql“]
LOAD DATA INFILE „{DATEI_NAME}“ INTO TABLE {TABELLEN_NAME} FIELDS TERMINATED BY ‚,‘ OPTIONALLY ENCLOSED BY ‚“‚ LINES TERMINATED BY ‚\n‘ IGNORE 1 LINES;
[/code]
Dabei müssen {DATEI_NAME} und {TABELLEN_NAME} angepasst werden. Die übrigen Angaben sind weitesgehend optional, aber bei dem konkreten Fall eines CSV Imports notwendig. Die Angaben sind ja weitesgehend selbsterklärend. IGNORE 1 LINES wird verwendet, wenn die erste Zeile die Spaltennamen enthält. In manchen Fällen ist ein
[code lang=“sql“]
LINES TERMINATED BY ‚\r\n‘
[/code]
notwendig (je nach Formatierung des Import-Files).
NULL-Values
Wenn das Import-File NULL Werte ohne Anführungszeichen enthält, sollte man die Datei vorher mit vi für den Import optimieren, dazu folgenden Befehl verwenden:
[code lang=“shell“]
vi {DATEI_NAME}
:%s/;NULL/;“NULL“/g
[/code]
Dadurch werden alle NULL werte in „NULL“ umgewandelt – SQL Werte dies dann korrekt als NULL und nicht als String.
Basic Infos
Wer noch nicht mit der Unix SQL Shell vertraut ist – so funktioniert das ganze:
- Auf dem Server einloggen
- [code lang=“shell“]mysql -u {DB_USER} -p[/code]
- Passwort des Datenbank Users eingeben
- [code lang=“sql“]USE {DB_NAME}[/code]
- Import-Befehl eingeben (s.oben)
Der Kampf um MySQL
Hinter den Kulissen brodelt es und langsam wird das Brodeln immer lauter. Oracle will Sun aufkaufen. Klingt zunächst nicht besonders spektakulär – wenn man sich aber die Hintergründe dieses Übernahmeversuches anschaut, sollte man aufhorchen – genau das tat auch EU-Wettbewerbskommissarin Neelie Kroes. Denn Oracle ist der weltweit größte Hersteller von proprietären Datenbanken. Sun hingegen hat 2008 die Open Source Datenbank MySQL für knapp 1 Milliarde US Dollar übernommen und ist somit zum weltweit größten Open Source Datenbank Anbieter geworden. Es versucht also nun der größte Anbieter kommerzieller Datenbanken, den Anbieter von kostenlosen Datenbanken zu übernehmen!
Amazon RDS: Eine Datenbank in der Cloud
Amazon arbeitet weiter an seinen Web Dienstleistungen. Mit der Tochterfirma Amazon Web Services bietet das Versandhaus Cloud-based Services an, also sehr skalierbare Systeme wie zum Beispiel Server („Elastic Compute Cloud“ / EC2) und Speichersysteme („Simple Storage Service“ / S3). Bezahlt werden diese Services per pay-by-use, sprich man bezahlt nur das, was man auch nutzt. Somit liegen die zwei Hauptvorteile auf der Hand:
- Man kann Serverausfälle durch Traffic-Peaks vorbeugen
- Man bezahlt nicht für unnötige Infrastruktur, die nur selten ausgelastet wird
Zu dem bestehenden Datenbankangebot SimpleDB™ gesellt sich nun der Relational Database Service oder kurz RDS. Dieser versetzt MySQL 5.1 in die Cloud und steht ab sofort jedem als Beta Version zur Verfügung.
MAMP: Zugriff auf MySQL Shell erstellen + DB Import
Wer unter Mac MAMP1 als MySQL und PHP Server benutzt, wird früher oder später vor dem Problem stehen, die MySQL Shell anzusprechen. Das wird zum Beispiel nötig, wenn man versucht, größere Backupdateien in die Datenbank einzulesen2, dann verweigert PhpMyAdmin nämlich schnell mal den Dienst.