示例#1
0
        $db = new DatabaseConnection();
        $db->exec('DROP TABLE IF EXISTS geoalias');
        $db->exec('CREATE TABLE geoalias (id INT PRIMARY KEY AUTO_INCREMENT, geoid BIGINT, locname VARCHAR(64) CHARSET utf8, INDEX locname(locname(5))) CHARSET utf8');
        $rows = $db->getRows("SELECT id,alternatenames FROM geonames WHERE alternatenames!=''");
        console::write('%8d / %8d ', 0, count($rows));
        foreach ($rows as $row) {
            $alt = explode(',', $row['alternatenames']);
            foreach ($alt as $altstr) {
                $db->insertRow("INSERT INTO geoalias (geoid,locname) VALUES (%d,%s)", $row['id'], $altstr);
            }
            $rc++;
            $rt++;
            if ($rt >= 100) {
                $rh++;
                if ($rh >= 50) {
                    console::write("\n%8d / %8d ", $rc, count($rows));
                    $rh = 0;
                } else {
                    console::write('.');
                }
                $rt = 0;
            }
        }
        console::writeLn(' Done!');
    }
}
if (base::appPath() != '/') {
    Actions::register(new GeonamesAction(), 'geonames', 'Manage the geonames table', GeonamesAction::$commands);
} else {
    console::writeLn("Warning: Application path can not be resolved for Geonames action. Define APP_PATH or execute from application root.");
}