phpbar.de logo

Mailinglisten-Archive

AW: formatierte Textdatei ohne Feldtrenner in mysql einlesen

AW: formatierte Textdatei ohne Feldtrenner in mysql einlesen

Uwe Drießen driessen at edv-driessen.de
Sam Okt 9 12:51:43 CEST 2004


Hallo Liste,
Vielen Dank für die vielen Schweistropfen welche Ihr vergossen habt an
diesem Problem.

> -----Ursprüngliche Nachricht-----
> Von: henry bayer [mailto:henry_bayer at gmx.de] 
> Gesendet: Samstag, 9. Oktober 2004 05:15
> An: mysql-de at lists.4t2.com
> Betreff: Re: formatierte Textdatei ohne Feldtrenner in mysql einlesen
> 
> guten morgen uwe,
> 
> >> da die längen in der source-file aber nicht mit den längen in der 
> >> tabelle übereinstimmen, gibt es datensalat. die längen müssen also 
> >> identisch sein.
> 
> > Das mit den längen ist das kleinste Problem das ist schnell 
> angepasst.
> 
> ha, vielleicht die lösung gefunden. prüfe doch nochmal, ob 
> das TABs oder ob das wirklich leerzeichen sind im 
> source-file. wenn da _keine_ tabs sind sondern die zeile im 
> Festzeilenformat vorliegen, hilft

Sie liegen in einem festen Format vor kann man durchzählen. Was bleibt ist,
es sind keine tabs zwischen den Feldern es sind definitiv leerzeichen.

> 
> LOAD DATA  LOCAL INFILE '/path/sourcefile' into table TBL 
> fields terminated by "" ENCLOSED BY "" ignore X lines 
> (source,destination, packets, bytes);

Auch das habe ich probiert aber MySql 4.0.21-log  und PHPMyAdmin 2.6.0-pl1
haben ein Problem damit, es kommt immer importierte Zeilen -1 und die
Datenbank bleibt leer
Auch direkt in MySql geht es nicht. Ich müßte während des Imports die
komplette Zeile holen, in Segmente zerlegen, leerzeilen strippen, Felder
zuweisen und dann erst den Datensatz zurückschreiben.
Rein in MySQL könnte man auch probieren jede Zeile in ein einziges Feld und
dann erst das ganze weiterverarbeiten in eine zweite Dakenbank/Tabelle
korriegiert reinschieben. Das wäre allerdings dann kein Mengenorientiertes
Arbeieten sondern Zeilenorientiert und das kostet dann richtig zeit. Wobei
ich es noch nicht ausprobiert habe. Wenn ich Zeit habe mach ich es mal Erst
den Import in ein Feld einer Tabelle und dann mit Insert into table set( ...
Einfach in eine zweite Tabelle mal schauen wieviel zeit das ganze braucht
bei 20000 Datensätzen.

Also nochmals besten Dank, Nobert hat mir ein PHP geschickt was aus dem
ganzen ein SQL macht.

> 
> _dann_ könnte die zeilenlänge der felder in der mysql-tabelle 
>  interessant sein, bei den tabs ist es nämlich egal.
> 
> zum nachlesen 
> http://dev.mysql.com/doc/mysql/de/LOAD_DATA.html (suchphrase 
> 'Festzeilenformat').
> 
> wie ich mich richtig erinnerte, mochte ich diese format noch 
> nie, denn spätestens bei null-werten gibt es ein problem. 
> dann bleibt nur noch das script deiner wahl, um die 
> source-datei so zu manipulieren, dass die db das importieren kann.
> 
> 
> mfg
> 
> henry
> 
> --
> GMX ProMail mit bestem Virenschutz http://www.gmx.net/de/go/mail
> +++ Empfehlung der Redaktion +++ Internet Professionell 10/04 +++
> 
> -- 
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql 
>

Gruß 

Uwe

Es liegt was in der Luft

www.feilbingert.net

Uwe Drießen
Software & Computer
Lembergstraße 33

67824 Feilbingert

Tel.: 06708 660045 Fax 06708 661397

www.edv-driessen.de 

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive