ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/dinfo/dinfo-import1
Revision: 1.1
Committed: Mon Aug 25 03:29:34 2003 UTC (23 years, 1 month ago) by root
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/usr/bin/perl
2    
3     use Carp;
4    
5     use PApp::SQL;
6    
7     # 2031616: 0:435514 1:44163 2:107528 3:127671 4:8311 5:2028604 6:117468 7:8210 8:11754 9:24860 14:4344
8     # 4128768: 0:650846 1:92556 2:183027 3:170894 4:8605 5:4122242 6:147178 7:8238 8:11802 9:31453 14:6460
9    
10     my @cvtid = (
11     [name => 0],
12     [vorname => 1],
13     [zusatz1 => 2],
14     [zusatz2 => 3],
15     [zusatz3 => 4],
16     [vorwahl => 5],
17     # nummer
18     [strasse => 7],
19     [haus => 8],
20     [plz => 9],
21     [ort => 10],
22     #[ort => 11], # Ortsteil
23     [branche => 12],
24     [typ => 13],
25     );
26    
27     local $PApp::SQL::DBH = PApp::SQL::connect_cached "dinfo::", "DBI:mysql:dinfo";
28    
29     sql_exec "truncate $_"
30     for qw(branche haus name ort plz row strasse typ vorname vorwahl zusatz1 zusatz2 zusatz3);
31    
32     sql_exec "lock tables " . join ", ", map "$_ write",
33     qw(branche haus name ort plz row strasse typ vorname vorwahl zusatz1 zusatz2 zusatz3);
34    
35     open my $fh, "<", "main.tsv"
36     or croak "main.tsv: $!";
37    
38     while (<$fh>) {
39     chomp;
40     my @data = split /\t/;
41    
42     $data[3] =~ s/^, //;
43     $data[7] =~ s/\.$// && $data[6] =~ s/ Geb$/Geb./;
44    
45     $data[6] =~ /^((?:[a-zA-Z][-.\/a-zA-Z0-9]*)?) (?:\s*\+)? \s* ([0-9\ ]+)$/x or do {
46     warn "ERR: unparseable telnr. '$data[6]'";
47     next;
48     };
49    
50     $data[6] = $2;
51     $data[13] = $1;
52    
53     ($data[5] eq substr $data[6], 0, length $data[5])
54     and substr $data[6], 0, length $data[5], "";
55    
56     if (length $data[6] > 12) {
57     warn "ERR: number too long '$data[6]'";
58     next;
59     }
60    
61     for (@cvtid) {
62     my ($name, $idx) = @$_;
63     $data[$idx] = ($cache[$idx]{$data[$idx]}
64     ||= sql_insertid sql_exec
65     "insert into $name (id, data) values (NULL, ?)", "$data[$idx]");
66     }
67    
68     $data[13] < 16 or die "ERR: too many typ's";
69    
70     $data[6] =~ s/ //g;
71     $data[6] = pack "H*", (substr "$data[6]000000000", 0, 12) . sprintf "%x%x", 12 - length $data[6], $data[13];
72     #warn unpack "H*", $data[6];
73    
74     #name vorname zusatz1 zusatz2 zusatz3 vorwahl nummer strasse haus plz ort branche
75    
76     print +(join "\t",
77     $data[0], $data[1], $data[2], $data[3], $data[4],
78     $data[5], $data[6],
79     $data[7], $data[8], $data[9], $data[10], $data[11],
80     ), "\n";
81    
82     $count++ & 4095 or warn time . " $count";
83    
84     if (0) {
85     $freq[$_]{$data[$_]}++ for (0..9, 14);
86    
87     unless (++$x & 65535) {
88     print "$x: ";
89     for (0..9, 14) {
90     print "$_:".(scalar keys %{$freq[$_]})." ";
91     }
92     print "\n";
93     }
94     }
95     }
96