php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2011, 13:19  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Text-Datei parsen und MySQL updaten

Hallo zusammen,

ich habe folgendes Problem:
Ich lade mir 4 Txt-Dateien über FTP auf meinen Webserver herunter (oder es ist eine Zip-Datei, die dann entpackt wird und darin ist eine Txt-Datei enthalten).
Anschließend parse ich diese Dateien, die ca. 30.000 - 100.000 Zeilen enthalten und update nach jeder Zeile den jeweiligen Datensatz in meiner MySQL-Datenbank.

Leider dauert dieser Ansatz zu lange (über eine Stunde).
Gibt es eine bessere und elegantere Methode, um den Update-Prozess zu beschleunigen?

Vielen Dank im Voraus!
mbauer ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.07.2011, 13:57  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Beim Parsen der Eingabedateien eine Datendatei erstellen, die sich anschließend mit LOAD DATA INFILE „einspielen“ lässt ...?

Mehr kann man da spontan nicht zu sagen, weil du die konkreten Umstände viel zu wenig beschrieben hast.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 18.07.2011, 14:24  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die schnelle Antwort!

Also ich habe pro Txt-Datei eine ID. Aus der Datei hole ich mir zusätzlich noch die Artikel-Id und Artikel-Anzahl.

LOAD DATA INFILE könnte eine Lösung sein. Es müssten aber trotzdem diese 4X 30.000 - 100.000 Updates durchgeführt werden. Ist das dann wirklich schneller?
mbauer ist offline   Mit Zitat antworten
Alt 18.07.2011, 14:41  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mbauer Beitrag anzeigen
Ist das dann wirklich schneller?
„... als Verfahren, dessen Details ich immer noch beharrlich verschweige?“

Vermutlich ja. Im Gegensatz zu einzelnen Updates in einer Schleife(?) vermutlich sogar deutlich.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 18.07.2011, 14:54  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich probiere es aus und werde das Ergebnis dann posten.
mbauer ist offline   Mit Zitat antworten
Alt 18.07.2011, 16:51  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube mit LOAD DATA INFILE klappt das Vorhaben nicht. Ich hoffe aber, dass mich jemand korrigieren kann.

Ich habe jetzt eine SQL-File, das ca. 17 MB groß ist. In der Datei stehen nur Update-Statements, wie z.B.:
Code:
UPDATE tartikel SET fLagerbestand='45' WHERE cISBN='0180537' AND cASIN='2';
Die Queries führe ich jetzt so aus:

Code:
$array = file("queries.sql");
foreach ($array as $query) {
	mysql_query($query) or die(mysql_error());
}
Dadürch ist er aber nicht wirklich schneller geworden. Hat jemand noch einen Tipp für mich? Danke!
mbauer ist offline   Mit Zitat antworten
Alt 18.07.2011, 17:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Die Queries führe ich jetzt so aus:
Gibts auch nen Grund dafür?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 18.07.2011, 17:15  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard

Na ja, für ein LOAD DATA INFILE bräuchte man den Primary Key, um ein REPLACE machen zu können.

Dann könnte ich die Datei z.B. so aufbauen:
id | bestand
1 | 10
2 | 12

Aber ich könnte mir die Primary Keys per SELECT holen. Das müsste doch relativ schnell gehen. Dann die Datei so aufbauen, wie beschrieben. Und dann das LOAD DATA INFILE mit REPLACE benutzen.

Ich habe noch nie mit LOAD DATA INFILE gearbeitet. So wie ich das sehe, kann man damit wunderbar Daten einfügen. Ich möchte aber bestimmte Datensätze, nach cISBN und cASIN rausgesucht, updaten.
mbauer ist offline   Mit Zitat antworten
Alt 18.07.2011, 17:34  
Neuer Benutzer
 
Registriert seit: 05.03.2010
Beiträge: 19
PHP-Kenntnisse:
Fortgeschritten
mbauer befindet sich auf einem aufstrebenden Ast
Standard

Eine temporäre Tabelle könnte auch zur Lösung beitragen:
http://forums.mysql.com/read.php?97,...676#msg-161676
mbauer ist offline   Mit Zitat antworten
Alt 18.07.2011, 17:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mbauer Beitrag anzeigen
Ich habe noch nie mit LOAD DATA INFILE gearbeitet. So wie ich das sehe, kann man damit wunderbar Daten einfügen. Ich möchte aber bestimmte Datensätze, nach cISBN und cASIN rausgesucht, updaten.
Genau das macht doch Replace.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mail HEADER GELight PHP Einsteiger 2 06.01.2011 13:25
php-Ausgabe des Artikeldatums bei Mouse-over über Bild McBorney PHP Tipps 2010 3 26.04.2010 13:40
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] CSS Problem, Links ausrichten monk HTML, Usability und Barrierefreiheit 7 09.03.2010 20:33
[Erledigt] Php Datei per Php o. Mysql ausführen XeCuter PHP Tipps 2010 2 23.01.2010 05:27
MySQL Befehle aus Datei lesen Lloyd Larkin PHP Tipps 2006 9 07.12.2006 12:27
CSV Datei in MySQL importieren phpler1609 PHP Tipps 2006 6 23.03.2006 14:48
Text datei. Zeugs auslesen dsmcg PHP Tipps 2007 38 30.11.2005 20:39
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
[Erledigt] durch Klick auf Text anderen Text einblenden HTML, Usability und Barrierefreiheit 3 03.07.2005 14:41
text datei löschen bzw. überschreiben PHP Tipps 2005 7 11.04.2005 16:19
[Erledigt] DIV´s wollen nicht wie ich das will :-) HTML, Usability und Barrierefreiheit 22 28.03.2005 18:36
Text mitten in einer Datei Schreiben PHP Tipps 2005 14 28.02.2005 12:42
Problem bei Text Datei PHP Tipps 2005 7 24.01.2005 20:31
txt-Datei erstellen d-81 PHP Tipps 2004 12 11.08.2004 20:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
daten f, text f, php load data infile mysql where id is .txt, mit txt file mysql aktualisieren, mysql datei parsen, datei parsen php, php sql file parsen, .txt datei parsen, txt datei parsen, php von txt in mysql updaten, mysql update aus datei, php sql txt update, php mysql update file, mysql text, php mysql txt daten anfügen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum