Pytanie moje dotyczy problemu, a w zasadzie możliwości przeparsowania dużego, wręcz ogromnego pliku .txt
Buduję serwis związany z nieruchomościami. Wszystkie oferty oraz wszystkie transakcje na rynku nieruchomosci od mniej więcej 1995 roku znajdują się w bazie danych, baza natomiast zarządzana jest przez system MLS (Multiple Listing Service). Jak nietrudno się domyślić, baza jest ogromna (w chwili obecnej około 100,000 pozycji). Każdej nocy system MLS-u zrzuca zawartość bazy do pliku txt w postaci 1rekord->1linia, a więc każdej nocy powstaje plik ze stu tysiącami linii, co daje mniej więcej około 90MB. Jako firma zrzeszona w systemie MLS mamy dostęp do owego pliku przez FTP i tylko przez FTP, nie ma w ogóle dostępu do dB.
Plik tekstowy wygląda mniej wiecej tak:
idNieruchomosci|idSystemowe|typNieruchomosci|idFirmy|idAgenta|cenaNieruchomosci|
..|...|...|.. itd
i tak 100,00 razy :)
Pytanie moje brzmi: czy ktokolwiek z szanownych forumowiczów miałby jakiekolwiek sugestie, jak w tak ogromym pliku, do którego jest tylko i wyłącznie dotęp przez FTP, wynaleźć te linie, które spełniają określone kryteria? Np. jak znaleźć takie linie, w których na pozycji 'idFirmy' występuje '123456' ? Bez większego wysiłku umysłowego fgets() i fscanf() odrzucam. Nie przy tak ogromych plikach. Jak to ugryźć? Przypominam, że plik znajduje sie na serwerze zdalnym, kosmicznie szybkim, ale jednak zdalnym, a
CODE
fopen('ftp://user:pass@server.com','r');
nie sprawia żadnego problemu.
Czy ktoś w ogóle z was spotkał się z takim zagadnieniem? Znalazłem pewne sugestie dotyczące parsowania dużych xml-i, ale tu dochodzi ewentualne wyszukiwanie w stringu. Zwracam się o pomoc, bo przetestowałem większośc możliwości.
Dzięki.