php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.03.2010, 14:36   #11 (permalink)
Erfahrener Benutzer
 
Registriert seit: 26.12.2009
Beiträge: 565
PHP-Kenntnisse:
Anfänger
thomas_w befindet sich auf einem aufstrebenden Ast
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
thomas_w ist offline   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 Einsteiger 3 17.12.2009 05:59
OpenID und XAMPP nanatsusaia PHP Einsteiger 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 Einsteiger 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
load data infile csv auto_increment, sql load csv replace, load data infile mit komma, php csv load data, csv trim load data infile, load data local infile replace comma, loading 2.php, load data infile csv php, vorname trim, sql load data € zeichen ignorieren, load data infile ignore, load data local infile beispiel, mysql csv importieren datum konvertieren, load data infile auto_increment, datenbank php \strasse\ ignorieren, load data varchar, load data infile replace primary, load data set names, php lines terminated by, load data local infile auto_increment

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:59 Uhr.




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