.cvs-Import, 2.Zeile fehlt

.cvs-Import, 2.Zeile fehlt

am 25.03.2006 15:09:17 von Armin Barth

Hallo NG,
ich habe hier eine .cvs-Datei mit folgendem Inhalt:
*************
400;;;|1-260|;|Bowdenzug Stop|;0.60;;476;0;0;1.86;|STÜCK|;10;|4023055102020|
401;;;|1-261|;|Bowdenzug Schwenkstück|;0.66;;476;0;0;2.04;|STÜCK|;10;
4023055102037|
402;|BRIGGS_STRAT|;|220796|;|1-262|;
Aussenh~Allenbefestigung|;0.75;;476;0;0;2.32;|STÜCK|;10;|402 3055102044|
403;|OREGON|;|02-107R|;|1-262|;
Aussenh~Allenbefestigung|;0.75;;476;0;0;2.32;|STÜCK|;10;|402 3055102044|
404;|BRIGGS_STRAT|;|022372|;|1-263|;|Aussenh~Allenbefestigun g
pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
405;|BRIGGS_STRAT|;|692179|;|1-263|;|Aussenh~Allenbefestigun g
pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
406;;;|1-264|;|Bowdenzug Biegewerkzeug|;2.85;;476;0;0;8.83;|STÜCK|;1;
4023055102068|
************
beim Import in eine Mysql-Tabelle mit

load data infile 'artikel_2006_k.csv' into table materialdb.ratioparts_2006
fields terminated by ';' enclosed by '|';

wird jede 2. Zeile verschluckt, d.h von den 75500 Zeilen der Datei landen
nur 37740 in der Tabelle.
Wo liegt hier der Fehler?
Gruß
Armin

Re: .cvs-Import, 2.Zeile fehlt

am 25.03.2006 15:47:19 von Thomas Rachel

Armin Barth wrote:

[csv gesnipt]

In einigen der genannten Zeilen fehlte ein |. Liegts vielleicht daran?

Ansonsten:

> load data infile 'artikel_2006_k.csv' into table
> materialdb.ratioparts_2006 fields terminated by ';' enclosed by '|';
>
> wird jede 2. Zeile verschluckt, d.h von den 75500 Zeilen der Datei
> landen nur 37740 in der Tabelle.
> Wo liegt hier der Fehler?

Keine Ahnung. Wüßte man die Struktur der Tabelle, wüßte man vielleicht
mehr...


Thomas
--
Wer lächelt, wenn etwas schiefgeht, weiss einen, den er dafür
verantwortlich machen kann.

Re: .cvs-Import, 2.Zeile fehlt

am 25.03.2006 16:12:33 von Johannes Vogel

Hi Armin



Armin Barth wrote:
> ich habe hier eine .cvs-Datei mit folgendem Inhalt:
> *************
> 400;;;|1-260|;|Bowdenzug Stop|;0.60;;476;0;0;1.86;|STÜCK|;10;|4023055102020|
> 401;;;|1-261|;|Bowdenzug Schwenkstück|;0.66;;476;0;0;2.04;|STÜCK|;10;
> 4023055102037|
^-- Hier fehlt ein |

> 402;|BRIGGS_STRAT|;|220796|;|1-262|;
Hier fehlt ein | --^
> Aussenh~Allenbefestigung|;0.75;;476;0;0;2.32;|STÜCK|;10;|402 3055102044|
> 403;|OREGON|;|02-107R|;|1-262|;
Hier fehlt ein | --^
> Aussenh~Allenbefestigung|;0.75;;476;0;0;2.32;|STÜCK|;10;|402 3055102044|
> 404;|BRIGGS_STRAT|;|022372|;|1-263|;|Aussenh~Allenbefestigun g
> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|

Das ist tatsächlich nur eine Row, jedoch auf zwei Zeilen verteilt.
Zählst du die beim Zeilen zählen (vielleicht per `wc -l `) als
zwei oder tatsächlich auch als nur eine?

> 405;|BRIGGS_STRAT|;|692179|;|1-263|;|Aussenh~Allenbefestigun g
> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
> 406;;;|1-264|;|Bowdenzug Biegewerkzeug|;2.85;;476;0;0;8.83;|STÜCK|;1;
> 4023055102068|
> ************
> beim Import in eine Mysql-Tabelle mit
> load data infile 'artikel_2006_k.csv' into table materialdb.ratioparts_2006
> fields terminated by ';' enclosed by '|';
> wird jede 2. Zeile verschluckt, d.h von den 75500 Zeilen der Datei landen
> nur 37740 in der Tabelle.
> Wo liegt hier der Fehler?

Darin, dass du anscheinend eine kaputte CSV-Datei hast. Vielleicht magst
du erst das CSV etwas abändern (bspw. mit sed), bevor du die Daten
importierst.

HTH, Johannes

Re: .cvs-Import, 2.Zeile fehlt

am 25.03.2006 19:27:32 von Armin Barth

Armin Barth wrote:

> Hallo NG,
> ich habe hier eine .cvs-Datei mit folgendem Inhalt:
> *************
> 400;;;|1-260|;|Bowdenzug Stop|;0.60;;476;0;0;1.86;|STÜCK|;10;
4023055102020|
> 401;;;|1-261|;|Bowdenzug Schwenkstück|;0.66;;476;0;0;2.04;|STÜCK|;10;
> |4023055102037|
> |402;|BRIGGS_STRAT|;|220796|;1-262|;|Aussenh~Allenbefestigun g|;0.75;;
> |476;0;0;2.32;|STÜCK|;10;|4023055102044|
> 403;|OREGON|;|02-107R|;|1-262|;|Aussenh~Allenbefestigung|;0. 75;;476;
> 0;0;2.32;|STÜCK|;10;|4023055102044|
> 404;|BRIGGS_STRAT|;|022372|;|1-263|;|Aussenh~Allenbefestigun g
> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
> 405;|BRIGGS_STRAT|;|692179|;|1-263|;|Aussenh~Allenbefestigun g
> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
> 406;;;|1-264|;|Bowdenzug Biegewerkzeug|;2.85;;476;0;0;8.83;|STÜCK|;1;
> 4023055102068|
> ************
> beim Import in eine Mysql-Tabelle mit
>
> load data infile 'artikel_2006_k.csv' into table
> materialdb.ratioparts_2006 fields terminated by ';' enclosed by '|';
>
> wird jede 2. Zeile verschluckt, d.h von den 75500 Zeilen der Datei landen
> nur 37740 in der Tabelle.
> Wo liegt hier der Fehler?

Danke für Eure schnellen Antworten, aber leider helfen diesen noch nicht so
richtig weiter.
Weil:
- die "|" sind im Original vorhanden und offensichtlich nur beim copy und
past unter gegangen.
- weiterhin wird genau jeder 2. Datensatz ausgelassen, d.h. es wir der 1,
der 3., der 5 usw. importiert.
- setze ich hinter jede Zeile ein weiteres "\r" wird nur die 2., 4. usw.
importiert.

Der Datenbank-Aufbau sieht wir folgt aus:
mysql> describe materialdb.ratioparts_2006;
+-----------------+-------------+------+-----+---------+---- ---+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+---- ---+
| id | int(11) | NO | PRI | | |
| hersteller | varchar(50) | YES | | NULL | |
| hst_artikelnr | varchar(50) | YES | | NULL | |
| ratio_artikelnr | varchar(50) | YES | | NULL | |
| bezeichnung | varchar(50) | YES | | NULL | |
| preis | float(5,2) | YES | | NULL | |
| prodcod | varchar(30) | YES | | NULL | |
| seite_garten | int(11) | YES | | NULL | |
| seite_forst | int(11) | YES | | NULL | |
| seite_werk | int(11) | YES | | NULL | |
| uvp | float(5,2) | YES | | NULL | |
| me | varchar(50) | YES | | NULL | |
| verpack_einh | varchar(10) | YES | | NULL | |
| ean13 | int(11) | YES | | NULL | |
+-----------------+-------------+------+-----+---------+---- ---+
14 rows in set (0.00 sec)

Gruß
Armin

Re: .cvs-Import, 2.Zeile fehlt

am 25.03.2006 19:50:08 von Armin Barth

Armin Barth wrote:

> Armin Barth wrote:
>
>> Hallo NG,
>> ich habe hier eine .cvs-Datei mit folgendem Inhalt:
>> *************
>> 400;;;|1-260|;|Bowdenzug Stop|;0.60;;476;0;0;1.86;|STÜCK|;10;
> 4023055102020|
>> 401;;;|1-261|;|Bowdenzug Schwenkstück|;0.66;;476;0;0;2.04;|STÜCK|;10;
>> |4023055102037|
>> |402;|BRIGGS_STRAT|;|220796|;1-262|;|Aussenh~Allenbefestigun g|;0.75;;
>> |476;0;0;2.32;|STÜCK|;10;|4023055102044|
>> 403;|OREGON|;|02-107R|;|1-262|;|Aussenh~Allenbefestigung|;0. 75;;476;
>> 0;0;2.32;|STÜCK|;10;|4023055102044|
>> 404;|BRIGGS_STRAT|;|022372|;|1-263|;|Aussenh~Allenbefestigun g
>> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
>> 405;|BRIGGS_STRAT|;|692179|;|1-263|;|Aussenh~Allenbefestigun g
>> pass.f|;0.75;;476;0;0;2.32;|STÜCK|;10;|4023055102051|
>> 406;;;|1-264|;|Bowdenzug Biegewerkzeug|;2.85;;476;0;0;8.83;|STÜCK|;1;
>> 4023055102068|
>> ************
>> beim Import in eine Mysql-Tabelle mit
>>
>> load data infile 'artikel_2006_k.csv' into table
>> materialdb.ratioparts_2006 fields terminated by ';' enclosed by '|';
>>
>> wird jede 2. Zeile verschluckt, d.h von den 75500 Zeilen der Datei landen
>> nur 37740 in der Tabelle.
>> Wo liegt hier der Fehler?
>
> Danke für Eure schnellen Antworten, aber leider helfen diesen noch nicht
> so richtig weiter.
> Weil:
> - die "|" sind im Original vorhanden und offensichtlich nur beim copy und
> past unter gegangen.
> - weiterhin wird genau jeder 2. Datensatz ausgelassen, d.h. es wir der 1,
> der 3., der 5 usw. importiert.
> - setze ich hinter jede Zeile ein weiteres "\r" wird nur die 2., 4. usw.
> importiert.
>
> Der Datenbank-Aufbau sieht wir folgt aus:
> mysql> describe materialdb.ratioparts_2006;
> +-----------------+-------------+------+-----+---------+---- ---+
> | Field | Type | Null | Key | Default | Extra |
> +-----------------+-------------+------+-----+---------+---- ---+
> | id | int(11) | NO | PRI | | |
> | hersteller | varchar(50) | YES | | NULL | |
> | hst_artikelnr | varchar(50) | YES | | NULL | |
> | ratio_artikelnr | varchar(50) | YES | | NULL | |
> | bezeichnung | varchar(50) | YES | | NULL | |
> | preis | float(5,2) | YES | | NULL | |
> | prodcod | varchar(30) | YES | | NULL | |
> | seite_garten | int(11) | YES | | NULL | |
> | seite_forst | int(11) | YES | | NULL | |
> | seite_werk | int(11) | YES | | NULL | |
> | uvp | float(5,2) | YES | | NULL | |
> | me | varchar(50) | YES | | NULL | |
> | verpack_einh | varchar(10) | YES | | NULL | |
> | ean13 | int(11) | YES | | NULL | |
> +-----------------+-------------+------+-----+---------+---- ---+
> 14 rows in set (0.00 sec)
>
> Gruß
> Armin
P.S. wc -l artikel*.csv bringt mir exakt die 75500 Zeilen der Text-Datei

Re: .cvs-Import, 2.Zeile fehlt

am 25.03.2006 22:15:01 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: .cvs-Import, 2.Zeile fehlt

am 26.03.2006 03:53:53 von Axel Schwenke

Armin Barth wrote:

>> |402;|BRIGGS_STRAT|;|220796|;1-262|;|Aussenh~Allenbefestigun g|;0.75;;
>> |476;0;0;2.32;|STÜCK|;10;|4023055102044|
....

>> load data infile 'artikel_2006_k.csv' into table
>> materialdb.ratioparts_2006 fields terminated by ';' enclosed by '|';

> - weiterhin wird genau jeder 2. Datensatz ausgelassen, d.h. es wir der 1,
> der 3., der 5 usw. importiert.
> - setze ich hinter jede Zeile ein weiteres "\r" wird nur die 2., 4. usw.
> importiert.

Scheint so, als wären deine Zeilenenden auf merkwürdige Weise kaputt.
Hast du mal mit 'LINES TERMINATED BY ...' in LOAD DATA probiert?
Defaultmäßig werden wohl UNIX Line Endings erwartet, also "\n".

Wenn alles nix hilft, greif zum Brecheisen: jag dein Textfile durch awk
und laß das INSERT Statements generieren. Die kannst du dann an mysql
verfüttern. Bei lediglich 75.000 Zeilen sollte das schnell genug sein.


XL

Re: .cvs-Import, 2.Zeile fehlt

am 26.03.2006 09:29:20 von Armin Barth

Andreas Kretschmer wrote:

> Du mußt deswegen nicht versuchen, dies mit Deinen Fullquote-Postings
> noch zu toppen.

Sorry, war nicht in böser Absicht.

Armin

Re: .cvs-Import, 2.Zeile fehlt

am 26.03.2006 09:56:28 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: .cvs-Import, 2.Zeile fehlt

am 26.03.2006 10:25:20 von Armin Barth

Axel Schwenke wrote:

> Scheint so, als wären deine Zeilenenden auf merkwürdige Weise kaputt.
> Hast du mal mit 'LINES TERMINATED BY ...' in LOAD DATA probiert?
> Defaultmäßig werden wohl UNIX Line Endings erwartet, also "\n".
Danke für den Hinweis.
Mit einem zusätzlichen ';\n' am Zeilenende hat er geklappt.

>
> Wenn alles nix hilft, greif zum Brecheisen: jag dein Textfile durch awk
> und laß das INSERT Statements generieren. Die kannst du dann an mysql
> verfüttern. Bei lediglich 75.000 Zeilen sollte das schnell genug sein.
War dann nicht mehr nötig.

Gruß
Armin