Rolf-Hubert Pobloth wrote:
Es liegen die Daten einmal als Datei.csv vor, die aus einer ms.doc generiert wurde. Es sind rd. 16 000 Kundenkarten mit insgesammt 470 000 Zeilen. Die CSV-Datei habe ich mit knoda (phpadmin kann so große Dateien nicht verarbeiten) eingelesen und habe nun die TEST Datensatz Feld1 Feld2 Feld3 Feld4 Feld 5 und Feld6 MySQL Datenbank.
Ist das dann auch wirklich eine comma separated value Liste, keine weiteren Komma, die die Feldreihenfolge durcheinanderbringen können?
Okay, hier hast du mich schon abgehängt. Von welcher Datei redest du? Der MySQL-Datenbank, die physikalisch irgendwo liegt, oder von einer bisher nicht erwähnten Quelldatei, wo die Rohdaten im Textformat vorliegen, die jetzt in Datensätze und Felder getrennt und in die SQL-Datenbank importiert werden sollen? Sandy
Nach einer nochmaligen Überprüfung des Sachverhaltes bin ich auf folgenden Lösungsansatz gekommen, den ich leider aus Mangel an Programmierkenntnissen nicht umsetzen kann:
Die DATEN.csv Datei beginnt wie folgt
KUNDENKARTE;;;; also den Text KUNDENKARTE und 5 Semikolons (;) Feldtrenner. Wenn man diese Textdatei nun Satz für Satz lesen würde und beim Auftreten des KUNDENKARTE im selben Satz einen Zählerwert hinten anfügen würde und diese Datensätze (natürlich ALLE) in eine neue Datei schreibt, dann hätte ich das Problem gelöst.
Wieder so ein Schwammausdruck. (^-^) Was heißt "alle" hier. Bitte mal ein PRÄZISE Darstellung des Datensatzes. Das mit einem Shellscript/AWK/Perl zu machen, sollte nur ein paar Minuten dauern, aber das Herausfinden, was genau du brauchst, das scheint eine kleine Geduldaufgabe zu werden.
Die Zählervariable wird immer um 1 erhöht und somit entstehen rd. 16000 Zeilen mit einem aufsteigenden Zähler im Datensatz. Kann mir jemand vielleicht einen Shell-Script zur Lösung anbieten?
Nach bisherigem Verständnis würdest du eine Datei mit 16.000 Zeilen erhalten, die am Ende jeweils eine laufende Nummer erhalten. Ist das wirlich dein Ziel? Dann brauchst du die Quelldatei nicht, das kann ein Script auch so generieren.
Beispiel Input-Datei KUNDENKARTE ; ; ; ; ; (CR-LF) Output-Datei KUNDENKARTE ; ; ; ; ; 0000001 (CR-LF)
Dieses müsste doch mit einem kleine Bash-Programm zu lösen sein?
Bash/AWK/Perl, sind nur ein paar Zeilen. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org