Brauche kleines PHP Script zum Optimieren Datei

Julian Ulrich

Angesehenes Mitglied
Liebe Leute!

Ich habe eine große Datei (6.5MB) mit Datensätzen wie:

"2.6.190.56","2.6.190.63","33996344","33996351","GB","United Kingdom"
"62.13.192.0","62.13.223.255","1041088512","1041096703","AT","Austria"
"62.24.0.0","62.24.31.255","1041760256","1041768447","DE","Germany"
"62.32.0.0","62.32.31.255","1042284544","1042292735","CH","Switzerland"
"62.32.128.0","62.32.255.255","1042317312","1042350079","PL","Poland"
...

Das geht ewig so weiter. Die Datei ist zu groß um sie in meine MySql Datenbank zu laden. (Gibt es einen Weg das zu tun? PhpMyAdmin schafft keine so großen Dateien).

Nun will ich ein kleines Script, dass die Datei öffnet und alle Zeilen bis auf die mit "AT" "DE" und "CH" herauslöscht.

Bitte um genaue Hilfe!
(Ich kann kaum bis nicht Php)

lg, julian
 
Woher hast Du diese Datei? klingt genau so wie das was ich vor einiger Zeit für Ayom gemacht habe. Deine Herkunft ist AT.
Hast Du einen shell Zugang?

Falls Ja:
CODE cat ips | awk -F, '{if ($5=="\"AT\"" || $5=="\"CH\"" || $5=="\"DE\"") print $0}' > myips

Speicher alle AT,DE,CH von ips nach myips

Wenn Du das in Mysql speichern möchtest, denk daran, dass Du es nachher auch wieder auslesen willst. Dafür ist das IP Format eher ungünstig. Schau mal hier http://ch2.php.net/ip2long

 
Useless use of cat :p

Das Awk Skript selber ist aber schön. Just use awk -F, .... < ips > myips

Was das für ne Datei ist interessiert mich auch
wink.gif


Geolocation IP Zeugs? Gibts sowas irgendwo brauchbar für umsonst?

 
Danke für die Hilfe.

Nur kenne ich mich mit dem Programmieren nicht aus und verstehe nicht viel mehr als Bahnhof.

Könnt ihr mir das noch einmal etwas genauer erklären?

Wie bekomme ich die Datei am besten in eine MySql Db?
 
Woher hast Du das File? Ich vermute, dass wir die gleiche Quelle haben könnten, dann kann ich Dir kurz nen extract machen.

Hast Du einen Shell Zugang (oder hast Du einfach nur ein funktionierendes Linux)?

Hast Du ip2long gelesen?

@kais, wie viel kostet mich das in terms of performance?

Das awk macht wenn AT,CH,DE dann speichert den Datensatz, sonst nicht.
 
Lade die Datei mit dem CSV-Importer in deine Datenbank und lösche die nicht benötigten Zeilen danach.

Der CSV-Importer importiert deine komplette Datei ohne Abbruch in eine Mysql-Tabelle.
Einfach deine Datei in das Verzeichnis "my_csv_files" laden und das Script starten.

Danach folgende Mysql-Abfrage ausführen:
CODE DELETE FROM tabelle WHERE spalte="AT" OR spalte="DE" OR spalte="CH"


 
QUOTE (Alain Aubert @ Do 14.9.2006, 16:12) @kais, wie viel kostet mich das in terms of performance?


Ist wohl gewiss irrelevant. Es sei denn die Datei hat eine nicht unrelevante Grösse
wink.gif


Ist halt wohl eine Unsitte von Unix Abhängigen bei einem solchen Konstrukt gleich "Useless use of cat"
zu schreien. Sorry for that.
blink.gif


 
QUOTE (Alain Aubert @ Do 14.9.2006, 15:12)Woher hast Du das File? Ich vermute, dass wir die gleiche Quelle haben könnten, dann kann ich Dir kurz nen extract machen.

Hast Du einen Shell Zugang (oder hast Du einfach nur ein funktionierendes Linux)?

Hast Du ip2long gelesen?

@kais, wie viel kostet mich das in terms of performance?

Das awk macht wenn AT,CH,DE dann speichert den Datensatz, sonst nicht.

http://ip-to-country.webhosting.info

und das:

http://www.maxmind.com/app/csv

Ich weiß nicht wirklich, welches besser ist.

Das wäre natürlich super
smile.gif


Ich probier aber auch gleich mal:


QUOTE Lade die Datei mit dem CSV-Importer in deine Datenbank und lösche die nicht benötigten Zeilen danach.


EDIT: Vielen Dank, geile Sache! Ich habs wirklich geschafft, das Script ist top!!
 
Zurück
Oben