IP2Location™ LITE IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE Database

Introduction

IP2Location LITE Database

This database provides a solution to determine the country, region or state, city, latitude and longitude of origin for any IP address in a few simple steps. First, retrieve the IP address from the networking protocol or server-side variable of the Web server. Next, translate the IP address to an IP number in decimal format to speed up the database query. Lastly, reverse lookup the IP number from the IP2Location™ database to pinpoint the exact geographical location.

The DB5.LITE edition is licensed under Creative Commons Attribution-ShareAlike 4.0 International License . It is free for personal or commercial use with attribution required by mentioning the use of this data as follows,

Please get the commercial edition if you are looking for high data accuracy, more records & customer support. Please visit product comparison page for more information.

Features

Translates IP address to country, region or state, city, latitude and longitude.

Current Version May 2021
Database Size 40.82 MB (2,657,243 Rows)
Database Format ASCII Text File (Comma Delimited) & Binary (BIN)

Database Fields

Name Type Description
ip_from INT (10) / DECIMAL (39,0)†† First IP address show netblock.
ip_to INT (10) / DECIMAL (39,0)†† Last IP address show netblock.
country_code CHAR(2) Two-character country code based on ISO 3166.
country_name VARCHAR(64) Country name based on ISO 3166.
region_name VARCHAR(128) Region or state name.
city_name VARCHAR(128) City name.
latitude DOUBLE City latitude. Default to capital city latitude if city is unknown.
longitude DOUBLE City longitude. Default to capital city longitude if city is unknown.

IPv4
†† IPv6

Database Setup

Below are the steps to set up the database for both IPv4 and IPv6 data.

Create Database

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db5`(
	`ip_from` INT(10) UNSIGNED,
	`ip_to` INT(10) UNSIGNED,
	`country_code` CHAR(2),
	`country_name` VARCHAR(64),
	`region_name` VARCHAR(128),
	`city_name` VARCHAR(128),
	`latitude` DOUBLE,
	`longitude` DOUBLE,
	INDEX `idx_ip_from` (`ip_from`),
	INDEX `idx_ip_to` (`ip_to`),
	INDEX `idx_ip_from_to` (`ip_from`, `ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Import Database

LOAD DATA LOCAL
	INFILE 'IP2LOCATION-LITE-DB5.CSV'
INTO TABLE
	`ip2location_db5`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

Create Database

CREATE DATABASE ip2location
GO

USE ip2location
GO

CREATE TABLE [ip2location].[dbo].[ip2location_db5](
	[ip_from] bigint NOT NULL,
	[ip_to] bigint NOT NULL,
	[country_code] nvarchar(2) NOT NULL,
	[country_name] nvarchar(64) NOT NULL,
	[region_name] nvarchar(128) NOT NULL,
	[city_name] nvarchar(128) NOT NULL,
	[latitude] float NOT NULL,
	[longitude] float NOT NULL
) ON [PRIMARY]
GO

CREATE CLUSTERED INDEX [ip_to] ON [ip2location].[dbo].[ip2location_db5]([ip_to]) ON [PRIMARY]
GO

Import Database

BULK INSERT [ip2location].[dbo].[ip2location_db5]
FROM '{PATH TO IP2LOCATION-LITE-DB5.CSV}'
WITH
(
	FORMATFILE = '{PATH TO DB5.FMT}'
)
GO

NOTE: You will need to copy the FMT code below and save it as a file named DB5.FMT on your computer.

12.0
9
1 SQLCHAR 0 1 "\"" 0 first_double_quote  Latin1_General_CI_AI
2 SQLCHAR 0 20 "\",\"" 1 ip_from "",
3 SQLCHAR 0 20 "\",\"" 2 ip_to "",
4 SQLCHAR 0 2 "\",\"" 3 country_code Latin1_General_CI_AI,
5 SQLCHAR 0 64 "\",\"" 4 country_name Latin1_General_CI_AI,
6 SQLCHAR 0 128 "\",\"" 5 region_name Latin1_General_CI_AI,
7 SQLCHAR 0 128 "\",\"" 6 city_name Latin1_General_CI_AI,
8 SQLCHAR 0 20 "\",\"" 7 latitude "",
9 SQLCHAR 0 20 "\",\"" 8 longitude ""

Create Database

CREATE DATABASE ip2location WITH ENCODING 'UTF8';
\c ip2location
CREATE TABLE ip2location_db5(
	ip_from bigint NOT NULL,
	ip_to bigint NOT NULL,
	country_code character(2) NOT NULL,
	country_name character varying(64) NOT NULL,
	region_name character varying(128) NOT NULL,
	city_name character varying(128) NOT NULL,
	latitude real NOT NULL,
	longitude real NOT NULL,
	CONSTRAINT ip2location_db1_pkey PRIMARY KEY (ip_from, ip_to)
);

Import Database

COPY ip2location_db5 FROM 'IP2LOCATION-LITE-DB5.CSV' WITH CSV QUOTE AS '"';

Create Database

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db5_ipv6`(
	`ip_from` DECIMAL(39,0) UNSIGNED,
	`ip_to` DECIMAL(39,0) UNSIGNED,
	`country_code` CHAR(2),
	`country_name` VARCHAR(64),
	`region_name` VARCHAR(128),
	`city_name` VARCHAR(128),
	`latitude` DOUBLE,
	`longitude` DOUBLE,
	INDEX `idx_ip_from` (`ip_from`),
	INDEX `idx_ip_to` (`ip_to`),
	INDEX `idx_ip_from_to` (`ip_from`, `ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Import Database

LOAD DATA LOCAL
	INFILE 'IP2LOCATION-LITE-DB5.IPV6.CSV'
INTO TABLE
	`ip2location_db5_ipv6`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

Create Database

CREATE DATABASE ip2location
GO

USE ip2location
GO

CREATE TABLE [ip2location].[dbo].[ip2location_db5_ipv6](
	[ip_from] char(39) NOT NULL,
	[ip_to] char(39) NOT NULL,
	[country_code] nvarchar(2) NOT NULL,
	[country_name] nvarchar(64) NOT NULL,
	[region_name] nvarchar(128) NOT NULL,
	[city_name] nvarchar(128) NOT NULL,
	[latitude] float NOT NULL,
	[longitude] float NOT NULL
) ON [PRIMARY]
GO

CREATE CLUSTERED INDEX [ip_to] ON [ip2location].[dbo].[ip2location_db5_ipv6]([ip_to]) ON [PRIMARY]
GO

Import Database

BULK INSERT [ip2location].[dbo].[ip2location_db5_ipv6]
FROM '{PATH TO IP2LOCATION-LITE-DB5.IPV6.CSV}'
WITH
(
	FORMATFILE = '{PATH TO DB5.FMT}'
)
GO

NOTE: You will need to copy the FMT code below and save it as a file named DB5.FMT on your computer. The first line of the FMT code indicates the version of bcp. Please change the version as according to your MS-SQL installed.

12.0
9
1 SQLCHAR 0 1 "\"" 0 first_double_quote  Latin1_General_CI_AI
2 SQLCHAR 0 39 "\",\"" 1 ip_from "",
3 SQLCHAR 0 39 "\",\"" 2 ip_to "",
4 SQLCHAR 0 2 "\",\"" 3 country_code Latin1_General_CI_AI,
5 SQLCHAR 0 64 "\",\"" 4 country_name Latin1_General_CI_AI,
6 SQLCHAR 0 128 "\",\"" 5 region_name Latin1_General_CI_AI,
7 SQLCHAR 0 128 "\",\"" 6 city_name Latin1_General_CI_AI,
8 SQLCHAR 0 20 "\",\"" 7 latitude "",
9 SQLCHAR 0 20 "\",\"" 8 longitude ""

Create Database

CREATE DATABASE ip2location WITH ENCODING 'UTF8';
\c ip2location
CREATE TABLE ip2location_db5_ipv6(
	ip_from decimal(39,0) NOT NULL,
	ip_to decimal(39,0) NOT NULL,
	country_code character(2) NOT NULL,
	country_name character varying(64) NOT NULL,
	region_name character varying(128) NOT NULL,
	city_name character varying(128) NOT NULL,
	latitude real NOT NULL,
	longitude real NOT NULL,
	CONSTRAINT ip2location_db1_pkey PRIMARY KEY (ip_from, ip_to)
);

Import Database

COPY ip2location_db5_ipv6 FROM 'IP2LOCATION-LITE-DB5.IPV6.CSV' WITH CSV QUOTE AS '"';

AMI & Images

IP2Location provides a free, pre-configured & ready-to-run AMI and images to easily set up the database.

Support

Please visit Stack Overflow to view the technical questions/answers about our LITE products.

License

Please review the General Terms and Conditions for the database licensing.

IP2Location™ IP Address Geolocation Database

In Commercial Edition, you'll get much more than just IP address lookup:

  • Better data accuracy
  • Access to up-to-date database
  • Additional level of support via email
Product Upgrade