PLZ/Ort Datenbank

27o8

abgemeldet
2 Mai 2006
9.028
933
Hallo,
ich suche eine Datenbank welche einfach nur plz und ort enthält. Es gibt zwar die opengeodb, aber da blick ich nicht durch. :-? Hab dann noch weiter gegooglet und auch so eine Datenbank gefunden, jedoch hat diese Umlautprobleme.... alle Umlaute werden nur als Fragezeichen dargestellt, und sowas kann ich nicht gebrauchen :sick:

Kennt da jemand was?

Benötigt werden übrigens nur Datensätze aus Deutschland. AT & CH wären zwar auch schön, aber nicht notwendig.
 
Was blickst du denn bei der OpenGEODb nicht durch, ist doch ne schöne runde Sache die auch immer Updated gehalten wird. Du findest in der DB auch die GEO Koordinaten und nicht nur die Namen, womit Du sogar ne neighbour Suche machen kannst.

Also ich kenne nix besseres.

*edit

Hier noch das Wiki von GeoDb mit Beispielen
 
Zuletzt bearbeitet:
Was blickst du denn bei der OpenGEODb nicht durch
Den ganzen Aufbau :-?.

Hab mir die letztens mal runtergeladen und bei mir in der Datenbank eingespielt. Hab da dann mehrere "geodb_" Tabellen erstellt bekommen. Unter anderem geodb_textdata mit ~340,667 Einträgen.

So wenn ich nun nach meinem Ort z.B. suche in "text_val" findet der auch einen Eintrag:

loc_id = 21672
text_type = 500100000
text_val = Niederroßbach, Westerwald
[...]

So dann muss ich nochmal nach loc_id = 21672 suchen um alle Infos dazu zu erhalten. Etwas umständlich, aber während meinem Posting hab ich den Aufbau der ganzen DB dann doch noch verstanden. Werde mir das ganze aber wohl umschreiben, dass ich alle Infos zu einem Ort in einem Datensatz habe und nicht einen Datensatz mit PLZ, einen mit Ort usw.
 
Ich habe auch ein bisschen Zeit gebraucht, um mich da komplett reinzudenken, aber wenn man mal drin ist, sieht man wie gut die Struktur ist ;)

Um alle Orte mit PLZ zu bekommen, müsste es ungefähr so hinhauen:
Code:
SELECT plz.text_val,ort.text_val
FROM geodb_textdata AS plz
LEFT JOIN geodb_textdata AS ort USING (loc_id)
WHERE plz.text_type="500300000"
  AND ort.text_type="500100000"
  AND LENGTH(plz.text_val)=5
Mal kurz runtergetippt und nich allzu viel getestet, kann sein, dass da paar falsche Datensätze sind, gibt paar Ausnahmen die man immer beachten muss.
Anmerkung: Die Zahlen sind Strings, weil die Tabelle dafür var_char Werte nutzt.
Ich prüfe auf die Länge von 5, weil da einige Einträge noch sind, die nur 4 Stellen haben, was allerdings keine Deutschen PLZ sind.
 
Zuletzt bearbeitet:
Hallo.
Ich habe die Datenbank jetzt soweit eingespielt.
Laut der Beschreibung von https://www.guido-muehlwitz.de/2009/10/tutorial-opengeodb-die-installation-der-datenbank/
muss ich jetzt die Datei opengeodb_end.sql einspielen.
Bei folgenden Befehlen bekomme ich aber eine Fehlermeldung.

Code:
create index tid_tnames_idx on geodb_type_names(type_id);
create index locale_tnames_idx on geodb_type_names(type_locale);
create index name_tnames_idx on geodb_type_names(name);
create index loc_type_idx on geodb_locations(loc_type);
create index coord_loc_id_idx on geodb_coordinates(loc_id);
create index coord_lon_idx on geodb_coordinates(lon);
create index coord_lat_idx on geodb_coordinates(lat);
create index coord_type_idx on geodb_coordinates(coord_type);
create index coord_stype_idx on geodb_coordinates(coord_subtype);
create index coord_since_idx on geodb_coordinates(valid_since);
create index coord_until_idx on geodb_coordinates(valid_until);
create index hierarchy_loc_id_idx on geodb_hierarchies(loc_id);
create index hierarchy_level_idx on geodb_hierarchies(level);
create index hierarchy_lvl1_idx on geodb_hierarchies(id_lvl1);
create index hierarchy_lvl2_idx on geodb_hierarchies(id_lvl2);
create index hierarchy_lvl3_idx on geodb_hierarchies(id_lvl3);
create index hierarchy_lvl4_idx on geodb_hierarchies(id_lvl4);
create index hierarchy_lvl5_idx on geodb_hierarchies(id_lvl5);
create index hierarchy_lvl6_idx on geodb_hierarchies(id_lvl6);
create index hierarchy_lvl7_idx on geodb_hierarchies(id_lvl7);
create index hierarchy_lvl8_idx on geodb_hierarchies(id_lvl8);
create index hierarchy_lvl9_idx on geodb_hierarchies(id_lvl9);
create index hierarchy_since_idx on geodb_hierarchies(valid_since);
create index hierarchy_until_idx on geodb_hierarchies(valid_until);
create index text_lid_idx on geodb_textdata(loc_id);
create index text_val_idx on geodb_textdata(text_val);
create index text_type_idx on geodb_textdata(text_type);
create index text_locale_idx on geodb_textdata(text_locale);
create index text_native_idx on geodb_textdata(is_native_lang);
create index text_default_idx on geodb_textdata(is_default_name);
create index text_since_idx on geodb_textdata(valid_since);
create index text_until_idx on geodb_textdata(valid_until);
create index int_lid_idx on geodb_intdata(loc_id);
create index int_val_idx on geodb_intdata(int_val);
create index int_type_idx on geodb_intdata(int_type);
create index int_since_idx on geodb_intdata(valid_since);
create index int_until_idx on geodb_intdata(valid_until);
create index float_lid_idx on geodb_floatdata(loc_id);
create index float_val_idx on geodb_floatdata(float_val);
create index float_type_idx on geodb_floatdata(float_type);
create index float_since_idx on geodb_floatdata(valid_since);
create index float_until_idx on geodb_floatdata(valid_until);

Fehlermeldung:
#1142 - INDEX command denied to user 'web0'@'localhost' for table 'geodb_type_names'

Woran könnte das liegen.

MfG Greaseball100
 
Steht doch da: "command denied".
Du musst dir entsprechende Rechte einräumen (bzw. einräumen lassen, wenn du keine Admin-Rechte hast):
Code:
[FONT=Courier New][B][COLOR=#9932cc]GRANT[/COLOR][/B] [B][COLOR=#9932cc]INDEX[/COLOR][/B] [B][COLOR=#9932cc]ON TABLE[/COLOR][/B] geodb_type_names [B][COLOR=#9932cc]TO[/COLOR][/B] web0;
[B][COLOR=#9932cc]FLUSH PRIVILEGES[/COLOR][/B];[/FONT]