MaxMind
Support My Account FAQ My Order
Support My Account FAQ My Order

GeoIP Installation Guidelines
Automatic Updates
Linux/Unix APIs
Windows APIs
Sample CSV Structure
ISO 3166-1 Codes
ISO 3166-2 Codes
FIPS 10-4 Codes
Country Lat/Long
US State Lat/Long
US Metro Code
GeoIP Support Center


GeoIP Country CSV Text Files

MaxMind GeoIP databases are available in a Comma Separated Value (CSV) format, in addition to the binary format. These CSV files generally contain IP Address range and geographical data for all publicly assigned IPv4 addresses.

Due to the large size of geolocation databases, we generally recommend using our binary format with one of our APIs, since they are highly optimized for speed and disk space. On the other hand, if you have a requirement to import the data into a SQL database, the CSV format is recommended. We have listed some guidelines for importing and querying the data with a SQL database.

CSV Format
The CSV File contains six fields:
  • Beginning IP Address
  • Ending IP Address
  • Beginning IP Number*
  • Ending IP Number*
  • ISO 3166 Country Code
  • Country Name

This is an sample of how the CSV file is structured:
"begin_ip","end_ip","begin_num","end_num","country","name"
"61.88.0.0","61.91.255.255","1029177344","1029439487","AU","Australia"
"61.92.0.0","61.93.255.255","1029439488","1029570559","HK","Hong Kong"
"61.94.0.0","61.94.7.255","1029570560","1029572607","ID","Indonesia"
* Beginning IP Number and Ending IP Number are calculated as follows:
ipnum = 16777216*w + 65536*x + 256*y + z   (1)

where

IP Address = w.x.y.z

The reverse of this formula is

w = int ( ipnum / 16777216 ) % 256;
x = int ( ipnum / 65536    ) % 256;
y = int ( ipnum / 256      ) % 256;
z = int ( ipnum            ) % 256;

Where % is the mod operator.
Here is sample Perl code to convert the IP number to a IP address:
sub numToStr {
  my ($ipnum) = @_;
  my $z = $ipnum % 256;
  $ipnum >>= 8;
  my $y = $ipnum % 256;
  $ipnum >>= 8;
  my $x = $ipnum % 256;
  $ipnum >>= 8;
  my $w = $ipnum % 256;
  return "$w.$x.$y.$z";
}
It is useful to have the IP Number if you are performing IP Address lookups using a database. For example the following queries will find the country based on IP Address 24.24.24.24:

SQL Query
SELECT ip_country FROM geoip WHERE 404232216 BETWEEN begin_ip_num AND end_ip_num
MySQL Query
SELECT ip_country FROM geoip WHERE 404232216 >= begin_ip_num AND
	404232216 <= end_ip_num
Here we used the formula (1) to compute the IP Number based on 24.24.24.24
404232216 = 16777216*24 + 65536*24 + 256*24 + 24
Guides For more information on importing GeoIP CSV files into MySQL, see HOW-TO Import the MaxMind GeoIP Free Country CSV file into MySQL and save diskspace.

For more information on importing GeoIP CSV files into Oracle 8i+ with PL/SQL and SQL*Loader files included, see GeoIP01.zip on Sascha Pfalz's download page.

For more information on importing GeoIP CSV files into MS Access, see How to install the MaxMind GeoIP CSV databases into an MS Access Database.


MaxMind, GeoIP and related marks are registered trademarks of MaxMind, Inc.
Copyright © 2008 MaxMind, Inc. All Rights Reserved. Terms of use.