.dev/scripts/geonames-db-import/sql/geonames_db_struct.sql

Summary

Maintainability
Test Coverage
CREATE TABLE IF NOT EXISTS geo_geoname (
    id              INT,
    name            VARCHAR(200)    COMMENT 'name of geographical point (utf8)',
    name_ascii      VARCHAR(200)    COMMENT 'name of geographical point in plain ascii characters',
    alternate_names VARCHAR(4000)   COMMENT 'alternate names, comma separated',
    latitude        DECIMAL(10, 7)  COMMENT 'latitude in decimal degrees (wgs84)',
    longitude       DECIMAL(10, 7)  COMMENT 'longitude in decimal degrees (wgs84)',
    feature_class   CHAR(1)         COMMENT 'see http://www.geonames.org/export/codes.html',
    feature_code    VARCHAR(10)     COMMENT 'see http://www.geonames.org/export/codes.html',
    country         VARCHAR(2)      COMMENT 'ISO-3166 2-letter country code',
    cc2             VARCHAR(60)     COMMENT 'alternate country codes, comma separated, ISO-3166 2-letter country code',
    admin1          VARCHAR(20)     COMMENT 'fipscode (subject to change to iso code) see geo_admin1 table. ISO codes are used for US, CH, BE and ME. UK and Greece are using an additional level between country and fips code.',
    admin2          VARCHAR(80)     COMMENT 'code for the second administrative division, a county in the US, see geo_admin2 table',
    admin3          VARCHAR(20)     COMMENT 'code for third level administrative division',
    admin4          VARCHAR(20)     COMMENT 'code for fourth level administrative division',
    population      INT,
    elevation       INT             COMMENT 'in meters',
    gtopo30         INT             COMMENT 'digital elevation model, srtm3 or gtopo30, average elevation of 3''x3'' (ca 90mx90m) or 30''x30'' (ca 900mx900m) area in meters',
    timezone        VARCHAR(100)    COMMENT 'the timezone id, see geo_timezone table',
    mod_date        DATE            COMMENT 'date of last modification in yyyy-MM-dd format',
    PRIMARY KEY (id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_alternate_name (
    id                  INT,
    geoname_id          INT,
    language_code       VARCHAR(7),
    name                VARCHAR(200),
    is_preferred        BOOLEAN,
    is_short            BOOLEAN,
    is_colloquial       BOOLEAN,
    is_historic         BOOLEAN,
    PRIMARY KEY (id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_country (
    code                    CHAR(2),
    iso_alpha3              CHAR(3),
    iso_numeric             INTEGER,
    fips_code               VARCHAR(3)      COMMENT 'Federal Information Processing Standards code',
    name                    VARCHAR(200),
    capital                 VARCHAR(200),
    area                    DOUBLE          COMMENT 'Area in squared kilometers',
    population              INTEGER,
    continent               CHAR(2),
    tld                     CHAR(3)         COMMENT 'Top Level Domain',
    currency                CHAR(3)         COMMENT 'Currency code',
    currency_name           CHAR(20),
    phone_prefix            CHAR(10),
    postal_code_format      VARCHAR(100)    COMMENT '#=number,@=char',
    postal_code_regex       VARCHAR(255),
    languages               VARCHAR(200)    COMMENT 'language codes in different standards, comma separated',
    neighbours              CHAR(100)       COMMENT 'Neighbour country codes, comma separated',
    equivalent_fips_code    CHAR(10)        COMMENT 'Additional FIPS code',
    geoname_id              INT,
    PRIMARY KEY (code)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_language (
    code            VARCHAR(50)     COMMENT 'ISO 639-1 code. Most commonly used code',
    iso_639_3       CHAR(4)         COMMENT 'ISO 639-3 code',
    iso_639_2       VARCHAR(50)     COMMENT 'ISO 639-2 code',
    name            VARCHAR(200),
    PRIMARY KEY (iso_639_3)
) CHARACTER SET utf8;


CREATE TABLE geo_admin1 (
    code        CHAR(6),
    name        TEXT,
    name_ascii  TEXT,
    geoname_id  INT,
    PRIMARY KEY (code, geoname_id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_admin2 (
    code        CHAR(15),
    name        TEXT,
    name_ascii  TEXT,
    geoname_id  INT,
    PRIMARY KEY (code, geoname_id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_hierarchy (
    id              INT NOT NULL AUTO_INCREMENT,
    parent_id       INT,
    child_id        INT,
    feature_code    VARCHAR(50)                     COMMENT 'see http://www.geonames.org/export/codes.html',
    PRIMARY KEY (id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_feature (
    code        CHAR(7)         COMMENT 'see http://www.geonames.org/export/codes.html',
    name        VARCHAR(200),
    description TEXT,
    PRIMARY KEY (code)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_timezone (
    id              VARCHAR(100),
    country_code    VARCHAR(5),
    gmt_offset      DECIMAL(3, 1)   COMMENT 'GMT offset on 1st of January',
    dst_offset      DECIMAL(3, 1)   COMMENT 'DST offset to gmt on 1st of July (of the current year)',
    raw_offset      DECIMAL(3, 1)   COMMENT 'Raw offset without DST',
    PRIMARY KEY (id)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_continent (
    code        CHAR(2),
    name        VARCHAR(20),
    geoname_id  INT,
    PRIMARY KEY (code)
) CHARACTER SET utf8;


CREATE TABLE IF NOT EXISTS geo_postal_code (
    postal_code     VARCHAR(20),
    country_code    CHAR(2),
    name            VARCHAR(180),
    admin1_name     VARCHAR(100)       COMMENT 'State name',
    admin1_code     VARCHAR(20)        COMMENT 'State code',
    admin2_name     VARCHAR(100)       COMMENT 'County/province name',
    admin2_code     VARCHAR(20)        COMMENT 'County/province code',
    admin3_name     VARCHAR(100)       COMMENT 'Community name',
    admin3_code     VARCHAR(20)        COMMENT 'Community code',
    latitude        DECIMAL(10, 7),
    longitude       DECIMAL(10, 7),
    accuracy        TINYINT(1)         COMMENT 'Accuracy of lat/lng from 1=estimated to 6=centroid',
    PRIMARY KEY (postal_code, country_code)
) CHARACTER SET utf8;