etops Geschrieben 24. November 2003 Teilen Geschrieben 24. November 2003 Hallo, meine PHP-Datei beinhaltet eine SELECT - Abfrage und anschließend eine INSERT INTO - Abfrage. Allerdings bricht die Datei jeweils nach 10 Minuten mit einem Fatal Error ab und bringt einen Timeout. Es geht um 978 Datensätze, die mit je etwa 20 Attributen eingelesen und mit 30 Elementen in eine andere Tabelle geschrieben werden. Das kann doch nicht so lange dauern?! Hat jemand eine Idee, was da schiefgeht? Danke etops Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 24. November 2003 Teilen Geschrieben 24. November 2003 Original geschrieben von etops Das kann doch nicht so lange dauern?! Hat jemand eine Idee, was da schiefgeht? Ein select oder 900? Liegt auf jeder Spalte im where Teil ein index? Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 24. November 2003 Autor Teilen Geschrieben 24. November 2003 Ich habe per SELECT jedes Feld einzeln aus der Ursprungs-DB ausgelesen. (erstes Feld ist ein Index). Eine WHERE-Klausel kommt dabei nicht vor. Also nicht 900x SELECT sondern alles zusammen. Die zweite Sache ist ein INSERT INTO ... VALUES ... Ich hab ja stark die Vermutung, daß der Haken darin liegt, daß ich jede Zeile einzeln einlese, Bedingungen prüfe und dann in die neue Datei schreibe. Aber ich weiß nicht, wie ichs anders machen soll. Zumindest das Einlesen muß zeilenweise passieren, da ich für jede Zeile Bedingungen prüfe, die an das Ende der Zeile angefügt werden. Gruß etops Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MasterC Geschrieben 25. November 2003 Teilen Geschrieben 25. November 2003 Du gehst da einen Umweg, der vielleicht gar nicht nötig ist. Du kannst die Daten auch so in eine andere Tabelle kopieren: SELECT feldname [feldname[,...]] FROM tablename WHERE bedingung INTO tablename Du mußt nur auf die Feldreihenfolge achten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 25. November 2003 Autor Teilen Geschrieben 25. November 2003 Das hört sich zwar gut an, aaaaaaaaaber: einige Felder, die in der neuen Tabelle gespeichert werden, sind ja in der Ursprungstabelle nicht gespeichert sondern werden erst berechnet. Alle Felder werden einzeln in Arrays gespeichert und dann ausgegeben. Nur: was ich eigentlich möchte, ist das Einfügen der Arrayinhalte in eine neue Tabelle. Es wäre mir neu, daß das mit SQL geht!? Danke für weitere Vorschläge etops Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 25. November 2003 Autor Teilen Geschrieben 25. November 2003 Mein Problem existiert leider immer noch: Syntaktisch funktioniert alles, aber die Bearbeitung durch den Server führt nach ca 10-15Min zu einem Timeout. Ich seh wahrscheinlich vor lauter Bäumen den Wald nicht mehr - bitte um Hilfe: Was mache ich falsch. Der Codeabschnitt, der sich mit der DB beschäftigt, lautet folgendermaßen: Eine leere Zieltabelle ist bereits angelegt; sie soll nur noch mit Werten gefüllt werden. while ($zeile = @ mysql_fetch_array($ergebnis)) // zeilenweises Einlesen der Quell-DB { verschiedene Berechnungen, von neuen Feldern echo "\n<table>\n" echo "\n<tr>"; echo "\n\t<td>{$zeile["feld1"]}</td>"; // Feld der Quell-DB echo "\n\t<td>{$zeile["feld2"]}</td>"; // Feld der Quell-DB echo "\n\t<td>{$zeile["feld3"]}</td>"; // Feld der Quell-DB echo "\n\t<td>{$zeile["feld-a"]}</td>"; // neu berechnetes Feld echo "\n\t<td>{$zeile["feld-b"]}</td>"; // neu berechnetes Feld echo "\n</tr>"; echo "\n</table>"; // Ausgabe der berechneten Felder in HTML - Tabelle // bis hierhin funktioniert alles inklusive // Berechnung der neuen Felder $num_rows = mysql_num_rows($ergebnis); while ($num_rows >= 1) { $einfuegen; } } $abfrage = "SELECT feld1, feld2, feld3 FROM basisdata"; $einfuegen = mysql_query("INSERT INTO newdata (feld1, feld2, feld3, feld-a, feld- VALUES (' ".$zeile["feld1"]." ',' ".$zeile["feld2"]." ', ' ".$zeile["feld3"]." ',' ".$zeile["feld-a"]." ', ' ".$zeile["feld-b"]." ')"); if (!(ergebnis = @ mysql_query ($abfrage, $connection))) showerror(); [/PHP] Es wäre toll, wenn mich jemand mal auf das Problem stoßen könnte oder evtl sogar eine Lösung hätte! Danke -etops- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 26. November 2003 Teilen Geschrieben 26. November 2003 Was berechnest du denn für die neuen Felder? Mit SQL kann man nämlich auch so einige Berechnungen anstellen etc. Vielleicht geht's ja doch mit einem einzelnen INSERT-SELECT... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 26. November 2003 Autor Teilen Geschrieben 26. November 2003 Die neuen Werte sind verschiedene Felder aus der Quell-DB, die unter bestimmten Bedingungen eingefügt werden -> es sind hauptsächlich Bedingungsprüfungen. Es kann doch nicht so schwer sein, den Inhalt dieser Felder (die in HTML einwandfrei ausgegeben werden) in eine neue Tabelle zu schreiben?! Danke etops Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etops Geschrieben 26. November 2003 Autor Teilen Geschrieben 26. November 2003 Ich habe gerade festgestellt, daß es eine Endlosschleife in Verbindung mit eigener Blödheit war, die mich hat scheitern lassen. Jetzt habe ich nur noch ein (vermutlich) ganz kleines Problem: die neue Tabelle wird nur mit einer einzigen Zeile "gefüttert", die ausschleßlich Nullwerte in den entsprechenden Formaten der Feldern enthält. Wo bitte ist nun der Fehler? Danke + Gruß etops 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.