Bosi Geschrieben 25. Juli 2005 Teilen Geschrieben 25. Juli 2005 Hi, ich habe ein unglaubliches Phänomen entdeckt und habe nun absolut keine Ahnung wie ich dieses Problem lösen könnte. Hoffe einer von euch hat eine Idee. zumindest find ic es sehr interessant, da mir sowas noch nicht begegnet ist. Ich habe ein bash-script geschrieben. diese script läuft auf einer Suse Linux 8.2 kiste und erstellt eine datei namens "liste". in folgender Form: erste Zeile: id;pName;pBegin;pEnd;pInts;pThemen;pAutor;pSample;pOrt die anderen zeilen sind sozusagen einträge also Daten. ich will quasi eine csv-Datei bilden. dann habe ich eine CGI-Script, wo ich über Sql Befehle mir einzelne Daten anzeigen lasse. Natürlich funktioniert das nicht und es liegt an der Datei "liste". Ich habe dann die Datei auf nen windows recher gespielt und per excel aufgerufen und da als csv-Datei gespeichert. diese habe ich wieder auf die Linuxkiste gespielt und schon funktionierte meine sql-Abfragen ohne probleme. dann habe ich die neue und alte Datei mit hilfe von "diff" verglichen. csv-Datei: < NULL;ikeaueb;;;0;;;;Uebungsverzeichniss Textdatei: > NULL;ikeaueb;;;0;;;;Uebungsverzeichniss das problem liegt also an der Dateidefinition die scheinbar hier über dieses "<" gesteuert wird. das wird natürlich in Editoren nicht als Textinhalt angezeigt so das man da nix ändern kann. wenn ich an die csv-datei Daten anhänge, und dann mit der ursprünglichen csv-Datei vergleiche, ist das ergebnis genau das gleiche. der neue Eintrag wird bei "diff" wieder mit ">" angezeigt. nun möchte ich nicht immer erst meine datei "liste" auf den windows rechner hauen um dann die als csv-Datei abzuspeichern, soll ja schließlich alles üebr ein script laufen. hat da einer eine idee wie ich über ein script eine csv-Datei bilden kann? mfg bosi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 25. Juli 2005 Teilen Geschrieben 25. Juli 2005 Kannst Du mal zwei Beispiel-CSV-Dateien anhängen, funktionierend und nichtfunktionierend? Und bitte auch die Code-Stelle posten, in der die Datei im CGI-Script eingelesen wird... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 25. Juli 2005 Teilen Geschrieben 25. Juli 2005 Ich bin mir jetzt nicht ganz sicher, ob ich dich richtig verstehe. Aber du kannst mich gerne berichtigen. Das "<" und das ">" sind ausgaben von diff. "<" zeigt dir den "alten" Inhalt und ">" zeigt dir was daraus wurde. Villeicht liegt es ja auch dem Zeilenumbruch. Dazu wäre eine genauere Fehlerbeschreibung und/ oder die Codestelle deines CGIs notwendig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 habe nochmal geforscht und stimmt das > und < kennzeichnen nur den Inhalt. habe es mit file und dann die csv-datei und die textdatei versucht, und da steht bei der csv-datei: such1.csv: ASCII text, with CRLF line terminators tja nur ist weiterhin die frage wie ich meine textdatei soweit umwandle damit i damit ich das lesen kann... mein Aufruf in dem CGI skript ist analog zur normalen datenabruf einer csv-datei: my $DB_DSN="DBI:CSV:f_dir=/pfad/data;csv_sep_char=\\;"; my $dbh = DBI->connect($DB_DSN) || die "CONNECT::$!"; my $sql = "SELECT * \nFROM liste \n$SString"; my $sth = $dbh->prepare($sql) || die $dbh->errstr(); $sth->execute() || die "EXECUTE::$!"; my $d = $sth->fetchall_arrayref(); $sth->finish; $dbh->disconnect(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 hat da einer eine idee wie ich über ein script eine csv-Datei bilden kann? CSV = Comma Separated Value. Das heisst, eine Darstellung von Daten in dem einzelne Felder durch Kommata getrennt sind. Die erste Zeile ist dabei in der Regel die Spaltenüberschrift. Auf http://www.wotsit.org/ kannst du mal nach cvs suchen, da findest du dann eine Beschreibung des Formats. Aber ansich ist es wie gerade geschrieben: Eine Zeile je Datensatz, Felder durch Kommata getrennt. Dass Excel da Semikolon reinmacht, ist wieder eine MS-Spezialität Also eine CSV-Datei hat keinen besonderen Header oder so. Wahrscheinlich hast du Probleme, wegen Leerzeichen o.ä.. In dem Fall muss der Feldinhalt mit "" umschlosen werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 naja das witzige ist, das der inhalt gleich ist bei beiden Dateien. Also ob ich ; oder , benutze als Trennungszeichen ist egal. wie gesagt der inhalt beider dateien also der csv-datei und der textdatei ist identisch. also kanns ja nicht an eventuellen leerzeichen liegen sondern eigentlich nur an der dateidefinition oder sehe ich das falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 sondern eigentlich nur an der dateidefinition oder sehe ich das falsch? Welche Dateidefinition? csv ist ein reines Textformat. Also eine reine Textdatei, ohne zusätzlichen Header o.ä. Komma oder Semikolon ist egal, weil du ja bei deiner Abfrage das Trennzeichen mit angibst. Meinte das auch nur allgemein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 mmh naja wie gesagt ich kenne mi da leider noch nicht so aus. Aber wenn beide nur reine textdateien sind und deren Inhalt völlig gleich ist, warum geht das dann nicht wenn i die Texdatei aufrufe bzw da per sql abfrage? Oder mache ich da irgendwas falsch beim CGI-Skript? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Häng doch mal zwei Beispiel-Dateien an, bitte... Vielleicht sind sie nur optisch gleich, und die Steuerzeichen unterscheiden sich, wie bereits gesagt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Aber wenn beide nur reine textdateien sind und deren Inhalt völlig gleich ist, warum geht das dann nicht wenn i die Texdatei aufrufe bzw da per sql abfrage? Bist du sicher, dass sie völlig gleich sind? Wenn das so ist, dprfte es ja keinen Unterschied geben. Wie sieht denn der Fehler aus bzw. was für eine Meldung bringt er denn? Was für einen Zeilenumbruch fügst du in deinem Skript in die Datei ein? Windows hat immer \r\n als Umbruch (Linux nur \n), hast du es so mal probiert? (\n = Linefeed, \r = carriage return) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 oh sorry hatte ich ganz vergessen. also das ist die textdatei: id;pName;pBegin;pEnd;pInts;pThemen;pAutor;pSample;pOrt NULL;Test1;Tue_Feb_22_2005;Mon_Mar_21_2005;411;;;;Projektverzeichniss NULL;Test2;Tue_Jul_19_2005;Tue_Jul_19_2005;1;;;;Projektverzeichniss NULL;Test3;Thu_Jul_21_2005;Thu_Jul_21_2005;1;Mar 2005;SBO/BMI;1000;Projektverzeichniss das ist die csv-Datei: id;pName;pBegin;pEnd;pInts;pThemen;pAutor;pSample;pOrt NULL;Test1;Tue_Feb_22_2005;Mon_Mar_21_2005;411;;;;Projektverzeichniss NULL;Test2;Tue_Jul_19_2005;Tue_Jul_19_2005;1;;;;Projektverzeichniss NULL;Test3;Thu_Jul_21_2005;Thu_Jul_21_2005;1;Mar 2005;SBO/BMI;1000;Projektverzeichniss also ich habe schonmal geschaut ob es zusätzliche leerzeichen oder umbrüche oder sowas gibt aber auch da habe ich nichts gefunden. wie gesagt das einzigste ist dieser unterschied bei dem befehl file, glaub ich zumindest bisher. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Ich meinte die Dateien richtig anhängen, als Dateianhänge Denn so sieht man die Steuerzeichen immer noch nicht... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 Oh sorry. mein fehler. hoffe so is es besser Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 sorry falsches format...Data.zip Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Die Dateien sind identisch, und kooperieren auch beide bei mir mit dem Modul DBM::CVS... Bekommst Du ne Fehlermeldung? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 Nein also wenn ich das script ausführe kommt im Browser keine Fehlermeldung. Zeigt nur an das er quasi mit der sql-abfrage nichts finden konnte. mehr nicht. wie gesagt stehe noch am anfang der CGI und Perl programmierung. gibts hier irgend nen befehl wie z.b. unter bash, wo man nen ablauf des programms in eienr datei speichern kann? oder andere nützliche befehle um vielleicht Fehlermeldungen zu erkennen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Was steht in der Variable $SString des CGI-Scripts drinn? Lass das mal bei dem SQL-Statement weg... Quasi so: my $sql = "SELECT * FROM liste "; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 Auch schon versucht. findet so auch keinen einzigen Eintrag. also habe schonmal im ganzen script geschaut aber keinen fehler erkennen können. Die SQL Abfrage war auch immer in Ordnung. kann meiner Ansicht nur an der Datei liegen und diese sind ja gleich außer das halt dieser blöde unterschied bei dem befehl file auftritt, also das die eine datei irgendwie anders is aber halt ni vom inhalt. hast du noch irgendeine idee was man da machen könnte? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Die Dateien von Bosi können aber nicht gleich sein! Sonst hätte es keine Ausgabe bei diff gegeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Komisch, denn die Beispieldateien unterscheiden sich ja inhaltsmäßig schon... @Bosi: Sind das wirklich die Dateien, mit denen Du die Probleme hattest, d.h. von denen eine funktionierte, und die andere nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 Ich sehe grade das i bei der csv datei die falsche geschickt hatte. das war zum probieren. hier noch mal die richtigen aber wirst sehen es sind nun beide vom inhalt gleich und es geht trotzdem nur die eine datei.Data.zip Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 Habe nen tip bekommen. bei der funktionierenden csv-datei, die per excel entworfen wurde steht bei eingabe von cat-v datei an jedem zeilenende ^M. enstehen dadurch, das unix und windows unterschiedliche zeilendendefinitionen haben. mmh muß i da sehen das ich in ne unixdatei diese ^M reinbekomme? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 gut hat sich erledigt. funzt nun endlich. habe einfach das komische ^M Zeichen in meine unixdatei an jedem Zeilende angehängt und nun klappts endlich problemlos. Danke nochmal für eure Tipps und hilfen.... mfg bosi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 26. Juli 2005 Teilen Geschrieben 26. Juli 2005 Genau diesen Unterschied hätte ich Dir jetzt nach Betrachtung der Beispieldateien diagnostiziert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bosi Geschrieben 26. Juli 2005 Autor Teilen Geschrieben 26. Juli 2005 mmh naja hätte ich nur ni ausversehen meine testdatei hochgeladen.... egal. hauptsache es klappt. *freude* danke nochmal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.