php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.03.2010, 14:36  
thomas_w
Gast
 
Beiträge: n/a
Standard

So, folgendes Beispiel habe ich mal zusammengestellt:

Code:
CREATE TABLE person (
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(50) NOT NULL,
 vorname VARCHAR(50) NOT NULL,
 strasse VARCHAR(50) NOT NULL,
 gebdatum DATE NOT NULL,
 
 PRIMARY KEY (id)
);

/*person.csv*/
"code";"name";"strasse";"datum"
"x11";"maier, otto";"strasse1";"02.01.1990"
"x91";"laier, fritz";"strasse2";"01.02.1990"
"xx91";"saier, emma";"strasse3";"03.03.1990"


LOAD DATA LOCAL INFILE 'person.csv'
  REPLACE INTO TABLE person
		FIELDS TERMINATED BY ';'
		ENCLOSED BY '\"'
		ESCAPED BY '\\'
		LINES TERMINATED BY '\r\n'
		IGNORE 1 LINES
  (@skip,@name,strasse,@datum)
  SET name = TRIM(SUBSTRING(@name,1,INSTR(@name,',')-1)),
      vorname = TRIM(SUBSTRING(@name,INSTR(@name,',')+1)),
      gebdatum = str_to_date(@datum, '%d.%m.%Y');
  
mysql> LOAD DATA LOCAL INFILE 'person.csv'
    ->   REPLACE INTO TABLE person
    ->          FIELDS TERMINATED BY ';'
    ->          ENCLOSED BY '\"'
    ->          ESCAPED BY '\\'
    ->          LINES TERMINATED BY '\r\n'
    ->          IGNORE 1 LINES
    ->   (@skip,@name,strasse,@datum)
    ->   SET name = TRIM(SUBSTRING(@name,1,INSTR(@name,',')-1)),
    ->       vorname = TRIM(SUBSTRING(@name,INSTR(@name,',')+1)),
    ->       gebdatum = str_to_date(@datum, '%d.%m.%Y');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

mysql> select * from person;
+----+-------+---------+----------+------------+
| id | name  | vorname | strasse  | gebdatum   |
+----+-------+---------+----------+------------+
| 13 | maier | otto    | strasse1 | 1990-01-02 |
| 14 | laier | fritz   | strasse2 | 1990-02-01 |
| 15 | saier | emma    | strasse3 | 1990-03-03 |
+----+-------+---------+----------+------------+
3 rows in set (0.00 sec)
Die Ausgangsdatei (CSV) hat vier Spalte, davon werden drei Spalten in die Datenbank eingelesen. Dafür habe ich diese Regeln definiert.

Code:
    ->   (@skip,@name,strasse,@datum)
    ->   SET name = TRIM(SUBSTRING(@name,1,INSTR(@name,',')-1)),
    ->       vorname = TRIM(SUBSTRING(@name,INSTR(@name,',')+1)),
    ->       gebdatum = str_to_date(@datum, '%d.%m.%Y');

1) "code" = @skip wird ignoriert (wird nicht eingelesen, erscheint nicht im SET)
2) "name" = @name - die Zeichen bis zum Komma ist der Nachname
3) "vorname" = @name - die Zeichen ab dem Komma ist der Vorname
4) "strasse" = "strasse" - Wert wird direkt übernommen (deshalb kein Variable @strasse in SET )
5) "gebdatum" = "@datum" - Typkonvertierung Datum

Das sollte eigentlich funktionieren.

Grüße
Thomas

Geändert von thomas_w (12.03.2010 um 15:10 Uhr). Grund: Schreibfehler korrigiert
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
LOAD DATA INFILE Feldgröße moepmann Datenbanken 5 21.02.2010 22:02
LOAD DATA LOCAL INFILE mit PDO_MYSQLl unter PHP most Datenbanken 7 16.02.2010 13:04
mysqli_multi_query lässt Eintrag aus... Samhayne Datenbanken 8 07.02.2010 19:02
[Erledigt] php mit LOAD DATA INFILE geht nicht 6setzen PHP Tipps 2009 3 17.12.2009 05:59
OpenID und XAMPP nanatsusaia PHP Tipps 2009 2 20.11.2009 13:21
[MySQL] Existiert Alternative für LOAD DATA INFILE für stored Procedures? TheIfrit Datenbanken 1 14.10.2009 09:59
[Erledigt] LOAD DATA LOCAL INFILE problem !! gustave PHP Tipps 2009 2 29.07.2009 14:55
Fehler by load data infile php script cn-systems PHP-Fortgeschrittene 7 28.11.2008 13:59
CSV datei mit load data local infile Datenbanken 8 01.07.2005 11:23
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
fgetcsv und Datum konvertieren PHP Tipps 2004 0 28.09.2004 11:40
LOAD DATA INFILE vom externen Ort kanti Datenbanken 0 30.08.2004 14:52
[Erledigt] load data infile - hört bei 127 einfach zu zählen auf? Datenbanken 3 01.07.2004 23:37
load data local Datenbanken 4 23.06.2004 14:28
csv import datum konvertieren Datenbanken 1 22.06.2004 07:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/65583-csv-datum-load-data-local-fly-konvertieren-2.html, load data local infile mysql zahl komma, mysql infile csv mit ;, mysql load csv kommazahlen, r datum einlesen, varchar null csv einlesen, load data infile csv auto_increment, sql load csv replace, mysql load data infile teilstring, datum in csv in deutsch in mysql, mysql infile \@\ str_to_date, mysql str_to_date load data local infile, load local infile trim, mysql deutsches datum load data infile, php create table load data infile, mysql csv local infile, php straße load, load data infile enclosed by tutorial, mysql load data infile csv columns datum, mysql datum csv nicht eingelesen

Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum