如何在 MySQL 中创建数据库以导入 Maxmind GeoLite2 city csv

Posted

技术标签:

【中文标题】如何在 MySQL 中创建数据库以导入 Maxmind GeoLite2 city csv【英文标题】:How to create database in MySQL for import Maxmind GeoLite2 city csv 【发布时间】:2016-06-10 11:43:22 【问题描述】:

如何在 mysql 中创建用于导入 Maxmind GeoLite2 城市 csv 的数据库? 我需要知道我必须使用哪些类型的字段以及如何正确连接数据库中的表以从 csv 文件导入。

这是我的 SQL 代码示例:

DROP TABLE IF EXISTS location;

CREATE TABLE IF NOT EXISTS `location` (
`geoname_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`locale_code` varchar(2) DEFAULT NULL, 
`continent_code` varchar(2) DEFAULT NULL,
`continent_name` varchar(20) DEFAULT NULL,
`country_iso_code` varchar(2) DEFAULT NULL,
`country_name` varchar(50) DEFAULT NULL,
`subdivision_1_iso_code` varchar(20) DEFAULT NULL, 
`subdivision_1_name` varchar(70) DEFAULT NULL,
`subdivision_2_iso_code` varchar(20) DEFAULT NULL, 
`subdivision_2_name` varchar(70) DEFAULT NULL,
`city_name` varchar(100) DEFAULT NULL,
`metro_code` int(11) DEFAULT NULL,
`time_zone` varchar(100) DEFAULT NULL,
PRIMARY KEY (`geoname_id`)
)   ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS blocks_IPv4;

CREATE TABLE `blocks_IPv4` (
`network` varchar(30) DEFAULT NULL,
`geoname_id` int(11) DEFAULT NULL,
`registered_country_geoname_id` int(11) DEFAULT NULL,
`represented_country_geoname_id` int(11) DEFAULT NULL,
`is_anonymous_proxy` tinyint(1) DEFAULT '0',
`is_satellite_provider` tinyint(1) DEFAULT '0',
`postal_code` varchar(45) DEFAULT NULL,
`latitude` float DEFAULT NULL,
`longitude` float DEFAULT NULL,
`accuracy_radius` INT(5)
)   ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS blocks_IPv6;

CREATE TABLE `blocks_IPv6` (
`network` varchar(255) DEFAULT NULL, 
`geoname_id` int(11) DEFAULT NULL,
`registered_country_geoname_id` int(11) DEFAULT NULL,
`represented_country_geoname_id` int(11) DEFAULT NULL,
`is_anonymous_proxy` tinyint(1) DEFAULT '0',
`is_satellite_provider` tinyint(1) DEFAULT '0',
`postal_code` varchar(45) DEFAULT NULL,
`latitude` float DEFAULT NULL,
`longitude` float DEFAULT NULL,
`accuracy_radius` INT(5)
)    ENGINE=InnoDB DEFAULT CHARSET=utf8;

【问题讨论】:

【参考方案1】:

您可以使用我的工具从 GitHub https://github.com/mbto/maxmind-geoip2-csv2sql-converter 将 MaxMind GeoLite2 国家/城市 CSV 转换为 MySQL/PostgreSQL/Microsoft SQL Server 2019

您可以阅读examples,或按照以下步骤操作:

    在https://support.maxmind.com/account-faq/license-keys/how-do-i-generate-a-license-key/ 获取 MaxMind API 的免费许可证密钥(如果您没有) 在adoptopenjdk.net 或github.com/raphw/raphw.github.io 或oracle.com/java 安装Java 11(如果未安装) 从releases(.zip 或 .tar)下载工具 解压到你的目录 使用您的个人资料名称复制/粘贴 .ini 模板 bin/GeoLite2-City-CSV.mysql.default.ini,例如 bin/GeoLite2-City-CSV.mysql.Your Project Name.ini 或使用默认值。 使用记事本打开 .ini 模板并更改 [windows_loader][unix_loader] 部分(设置 MySQL 主机:端口、用户和密码)。 对于 unix:执行 chmod +x maxmind-geoip2-csv2sql-converter 运行转换:maxmind-geoip2-csv2sql-converter.bat -c "GeoLite2-City-CSV.mysql.Your Project Name.ini" -k Your_License_Key -i 4,6 转换后,脚本bin/converted/loader.batbin/converted/loader.sh将可用。 对于 unix:执行 chmod +x loader.sh 执行loader.batloader.sh 以导入架构。

完成

【讨论】:

以上是关于如何在 MySQL 中创建数据库以导入 Maxmind GeoLite2 city csv的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MariaDb 中创建表并将数据导入 sql? [复制]

大数据--sqoop数据导入导出

如何在数据库中创建表

创建一个 MYSQL 存储过程以在不同的数据库中创建表

如何在 Python 中创建DataFrame

大数据DataX:HBase导入到MySQL