etops Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 Hallo, ich muß hier eine bestehende MySQL-Tabelle per PHP mit einem *.dat - File füllen, das in einem Unix-Filesystem vorliegt und ehrlich gesagt hab ich keinen Plan, wie das geht. Ich würde mich ja auch gerne einarbeiten (hatte noch nie richtig mit Unix zu tun), aber leider hab ich diese Aufgabe so kurzfristig und dringend bekommen, daß ich Eure Hilfe benötige... Die *.dat - Datei liegt im Verzeichnis /home/info/export; ansonsten besteht eine Verbindung zur Datenbank. Idealerweise möchte ich diesen Upload wie erwähnt mit PHP machen. Wäre toll, wenn mir jemand helfen könnte! Danke -etops- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 Zielt deine Frage auf das füllen der MySQL DB per PHP ab oder eher auf das Auslesen der Datei? Klingt für mich eher nach letzerem, aber wer weiss. Etwas konkreter darfs dann doch sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
back.to.roots Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 also, mal für mich zum verständnis: .dat-datei, wahrscheinlich eine auswertung o.ä. wird von einer software erzeugt und unter /home/info/export auf einer Unix / Linux-Maschine abgelegt. (Läuft darauf der Webserver / besteht ein SMB / FTP-Zugriff?) Per PHP soll diese Datei (automatisch aus dem Verzeichnis holen? / manuell den Pfad angeben?) geöffnet (wie gross ist die?) und nach bestimmten kriterien (z.B. 5 Textblöcke / Zahlenwerte, durch ; getrennt, in bestimmte tabellen) in eine MySQL-Datenbank geschrieben werden? Du bist dran Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 20. Oktober 2004 Autor Teilen Geschrieben 20. Oktober 2004 Also erstmal danke Euch beiden, back.to.roots ist schon mal näher dran .dat-datei, wahrscheinlich eine auswertung o.ä. wird von einer software erzeugt und unter /home/info/export auf einer Unix / Linux-Maschine abgelegt. (Läuft darauf der Webserver / besteht ein SMB / FTP-Zugriff?) Bis hierhin korrekt, das htdocs-Verzeichnis liegt unter /srv/www/htdocs Der Dateiname ist immer gleich; es soll dann die komplette Datei mit PHP in eine bereits bestehende Tabelle eingelesen werden (Dateigröße etwa 80MB, die Felder in der Tabelle sind alle ok und auch die einzulesenden Werte sind schon "vorbereitet"). Trennung ist das Semikolon. Danke + Gruß -etops- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
back.to.roots Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 kannst du vielleicht mal ein paar (erfundene) daten aus der datei im entsprechnenden format posten? und die struktur der tabelle? und was war mit kurzfristig und dringend gemeint? muss das diese woche fertig werden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 Ich weiss immer noch nicht - bzw. du hast noch immer nicht erwähnt - wo dein konkretes Problem liegt. Du weisst wo die Datei ist Du weisst wie sie Aussieht Du hast php auf der Maschine Davon Ausgehend das du php kannst (da du die Sache gern mit PHP erledigen möchtest) kann ich nicht erkennen wo es Probleme gibt. Du benötigst nur einen Zugang zur Maschine, einen Texteditor und die Fähigkeit auf der Kommandozeile "php deinscrpt.php" einzutippen zum Testen. Öffnen von Dateien, Zugriff aufs MySQL etc. sollte genauso wie unter Windows gehen. Datei öffnen, Zeilenweise auslesen, Datenfelder splitten, Query bauen, Query ausführen, rince and reapeat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 20. Oktober 2004 Autor Teilen Geschrieben 20. Oktober 2004 So, also mein Quelltext sieht jetzt so aus, aber irgendwas passt noch nicht: $path = 'home/info/export/'; $rs = system($path . 'mysql --host=localhost --password= --user=root Web < ./info.info_history.dat'); if ($rs) { echo 'Import ok'; } else { echo 'Es ist ein Fehler aufgetreten.'; } [/PHP] Ich denke, es fehlt die Zieltabelle?! Wenn ja, wo? Wär toll, wenn sich das nochmal jemand anschauen würde und Euch beiden vorab schon vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 Wenn du mysql ... < datei machst erwartet mysql eine Datei mit SQL-Befehlen, d.h. die Zieltabelle wäre dann teil der INSERT Statements in der Datei. Wenn deine Datei nur Werte enthält musst du erst SQL-Queries daraus machen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T´Pau Geschrieben 20. Oktober 2004 Teilen Geschrieben 20. Oktober 2004 Hallo etops, ich hab mal was ähnliches gemacht, poste dir einfach meinen Codeauszug, vieleicht kannst du was damit anfangen. Ich hatte eine csv Datei, die über Formular hochgeladen und dann in die DB eingelesen wurde. Den Teil, in die DB zu schreiben kannst du übernehmen, dann musst du nur noch was schreiben, um die datei zu öffnen. $zeilen=file($HTTP_POST_FILES['import']['tmp_name']); if (is_array($zeilen)) { foreach($zeilen as $string) { $spalten=explode(";",$string); $warengruppe=$spalten[0]; $artikelcode=$spalten[1]; $bestand=$spalten[2]; $bezeichnung=$spalten[3]; $preis=str_replace(",",".",$spalten[4]); echo $preis; $sql=mysql_query("insert into artikel set warengruppe='$warengruppe', artikelcode='$artikelcode',bestand='$bestand', bezeichnung='$bezeichnung', preis='$preis'"); if (!$sql) { echo mysql_error($db); $fehler++; } } } if (!$fehler) echo "<font class=big>Datei erfolgreich importiert!</font>"; [/php] 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.