{"id":19525880,"url":"https://github.com/nitram2342/telefonbuch-parser","last_synced_at":"2025-02-26T01:44:11.614Z","repository":{"id":136547473,"uuid":"1801834","full_name":"nitram2342/telefonbuch-parser","owner":"nitram2342","description":"Parser and repair script for dumps of the German phonebook 'Das Telefonbuch'.","archived":false,"fork":false,"pushed_at":"2011-05-26T07:37:28.000Z","size":149,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-08T15:27:29.385Z","etag":null,"topics":["database","phonebooks"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitram2342.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-25T23:40:57.000Z","updated_at":"2024-03-06T14:22:54.000Z","dependencies_parsed_at":"2023-03-10T21:25:34.642Z","dependency_job_id":null,"html_url":"https://github.com/nitram2342/telefonbuch-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram2342%2Ftelefonbuch-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram2342%2Ftelefonbuch-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram2342%2Ftelefonbuch-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram2342%2Ftelefonbuch-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitram2342","download_url":"https://codeload.github.com/nitram2342/telefonbuch-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240777554,"owners_count":19855856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","phonebooks"],"created_at":"2024-11-11T01:07:27.726Z","updated_at":"2025-02-26T01:44:11.562Z","avatar_url":"https://github.com/nitram2342.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Der hier vorhandene Satz Skripte parsed die exportierten Telefonbuchdatenbanken\nvon 'Das Telefonbuch' und importiert die Daten in eine Postgresql-DB. Dabei werden\nzahlreiche Probleme automatisiert gefixt.\n\nSiehe auch:\n\n- Erdgeist: \"Reverse-Engineering für Ortsfremde\", Datenschleuder 77,\n  http://ds.ccc.de/pdfs/ds077.pdf\n- https://erdgeist.org/cvsweb/Telefonbuch/#dirlist\n\nWie man eine Telefonbuchdatenbank aufbaut\n------------------------------------------\n\n\nHinweis: Eine Zeile im Telefonbuch wird meist als\n'Zeile' oder 'line' bezeichnet. Eine Continuation\nist ein Satz von Zeilen, die irgendwie semantisch zu\neinem Telefonbucheintrag dazugehoeren. Die Continuations\nwerden in der DB abgebildet.\n\n*\n*  Datenbank vorbereiten\n*\n\n  \u003e createdb phonebook\n  \u003e createuser pbookuser\n\n  \u003e psql phonebook\n\n  ... und dann die folgenden Zeilen SQL-Code pasten\n\n\t--\n\t-- Tabellenlayout fuer die gemergten Eintraege\n\t--\n\n\tdrop table tb_eintrag;\n\tcreate table tb_eintrag (\n\t        id serial not null, -- ID des Eintrags\n\n\t\tcont_id integer,   -- ID der Continuation\n\t\tcont_pos smallint, -- Position innerhalb der Continuation\n\n\t\t-- bit 0 - contains URL\n\t\t-- bit 1 - unused\n\t\t-- bit 2 - Darf Inverse gesucht werden\n\t\t-- bit 3 - Juristische Person\n\t\n\t\tinverse_allowed boolean,\n\t\tis_corporation boolean,\n\t\n\t        nachname varchar,\n\t        vorname varchar,\n\t        namenszusatz varchar,\n\t\tdetail varchar,\n\t\n\t        strasse varchar,\n\t        hausnummer varchar,\n\t\tadresszusatz varchar,\n\n\t        plz char(5),\n\t        ort varchar,\n\t\tortszusatz varchar,\n\n\t\tlvw char(2),\n\t        vorwahl varchar,\n\t        rufnummer varchar,\n\n\t\tis_phone bool,     -- zwei Flags, um Fax=Fon abbilden zu koennen\n\t\tis_fax bool,\n\n\t\temail varchar,\n\t\twebadresse varchar,\n\n\t        version bigint\n\t);\n\n\t-- Wesentliche Indizes fuer den Aufbau\n\n\tcreate unique index idx_tb_eintrag_id on tb_eintrag(id);\n\tcreate index idx_tb_eintrag_cont_id on tb_eintrag(cont_id);\n\tcreate index idx_tb_eintrag_completenumber on tb_eintrag(lvw, vorwahl, rufnummer);\n\n\n\t-- Sequence fuer die Continuations\n\tdrop sequence seq_cont_id;\n\tcreate sequence seq_cont_id start with 1;\n\n\n*\n* Telefonbuchdaten parsen\n*\n\n  Zum Parsen, Reparieren, Importieren, Mergen der Telefonbuchdaten gibt es das\n  Skript tb_parser.pl . Der letzte Parameter gibt den Modus an.\n\n  \u003e sh process_all_pbooks.sh fixmelater\n  \u003e sh process_all_pbooks.sh repair\n  \u003e sh process_all_pbooks.sh import\n\n  Der Modus fixmelater laesst zunaechst das Programm laufen. Anhand der Programmausgaben\n  kann man abschaetzen, welche Probleme automatisiert fixbar waeren, wenn man entsprechend\n  den Code anpasst. Der Modus 'repair' fragt den Benutzer nach der Eingabe eines manuellen\n  Fixes. Dieser wird in einer lokalen Datei gespeichert und steht fuer spaetere Durchlaeufe\n  zur Verfuegung. Bis inkl. Fruehjahr 2007 sind Patchsets vorhanden. Die kann ich aus\n  naeheliegenden Gruenden natuerlich nicht oeffentlich machen.\n\n  Anzahl der Fixes/Ignores pro Telefonbuch:\n\n  243 .1998_Herbst.patch\n  13 .1999_Fruehjahr.patch\n  108 .1999_Herbst.patch\n  193 .2000_Fruehjahr.patch\n  163 .2000_Herbst.patch\n  208 .2001_Fruehjahr.patch\n  303 .2001_Herbst.patch\n  132 .2002_Fruehjahr.patch\n  86 .2002_Herbst.patch\n  90 .2003_Fruehjahr.patch\n  71 .2003_Herbst.patch\n  137 .2004_Fruehjahr.patch\n  145 .2004_Herbst.patch\n  145 .2005_Fruehjahr.patch\n  40 .2005_Herbst.patch\n  232 .2006_Fruehjahr.patch\n  359 .2006_Herbst.patch\n  783 .2007_Fruehjahr.patch\n\n\n  Beispiele fuer Patch-Eintraege:\n\n  13111046;action=ignore;test=cleanup_number\n\n    Bedeutet, dass in Zeile 13111046 der Code fuer die Rufnummernbereinigung scheitert,\n    und das Tool beim naechsten Run die Zeile in Bezug auf den Rufnummern-Check ignorieren\n    soll.\n\n  30831702;action=fixlater;test=cleanup_number\n\n    Testfall schlug fehl. Das soll bei einem spaeteren Lauf repariert werden.\n\n  14803957;action=replace;test=check_number;rufnummer=568XXXXX\n\n    In der Zeile muss eine Rufnummer ersetzt werden (hier anonymisiert).\n\n\n*\n* Volltextindex erzeugen (fuer Arme-Leute-Datenbanken)\n*\n\n  for i in nachname vorname strasse ort ortszusatz namenszusatz adresszusatz detail; do \n\ttime perl fti_dbi.pl --db phonebook --table tb_eintrag --columns $i; \n  done\n\n\n*\n* Die restlichen Indizes Anlegen\n*\n\n  \u003e psql phonebook\n\n\tcreate index idx_tb_eintrag_plz on tb_eintrag(plz);\n\tcreate index idx_tb_eintrag_prefix on tb_eintrag(vorwahl);\n#\tcreate index idx_tb_eintrag_nummer on tb_eintrag(rufnummer);\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitram2342%2Ftelefonbuch-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitram2342%2Ftelefonbuch-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitram2342%2Ftelefonbuch-parser/lists"}