1

如何在 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;
4

1 回答 1

0

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

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

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

完毕

图式

于 2021-08-30T18:24:18.613 回答