Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.64 KB | None | 0 0
  1. USE `geoipdb`;
  2.  
  3. SELECT "Creating functions and procedures";
  4.  
  5. DELIMITER ;;
  6. DROP PROCEDURE IF EXISTS `ip2city`;;
  7. CREATE PROCEDURE `ip2city`(
  8. fp_ipstr VARCHAR(15)
  9. )
  10. READS SQL DATA
  11. DETERMINISTIC
  12. BEGIN
  13. DECLARE v_ip INT unsigned DEFAULT 0;
  14.  
  15. SET v_ip = ip4str_to_int( fp_ipstr );
  16.  
  17. SELECT CONCAT(l.city,IF(LENGTH(city), ', ', ''),
  18. r.region,IF(LENGTH(r.region), ', ', ''),c.country)
  19. FROM `geo_iprange` i JOIN `geo_blocks` b ON i.id = b.rangeid
  20. JOIN `geo_locations` l ON i.locid=l.id
  21. JOIN `geo_countries` c ON c.iso=l.iso
  22. JOIN `geo_regions` r ON r.iso=l.iso AND r.admin=l.admin
  23. WHERE i.ipstart<=v_ip AND i.ipend>=v_ip AND geoblock=(v_ip>>16)<<16;
  24.  
  25. END ;;
  26.  
  27. CREATE FUNCTION `ip4str_to_int`(
  28. fp_ipstr VARCHAR(255)
  29. ) RETURNS int(10) unsigned
  30. NO SQL
  31. DETERMINISTIC
  32. BEGIN
  33. DECLARE v_part, v_rem VARCHAR(15) DEFAULT "";
  34. DECLARE v_ret,v_pos INT unsigned DEFAULT 0;
  35. SET v_rem = fp_ipstr;
  36. WHILE LENGTH( v_rem ) DO
  37. SET v_pos = LOCATE( '.', v_rem );
  38. IF v_pos > 0 THEN
  39. SET v_part = SUBSTRING( v_rem, 1, v_pos - 1);
  40. SET v_rem = SUBSTRING( v_rem, v_pos + 1);
  41. SET v_ret = ( v_ret << 8 ) + v_part;
  42. ELSE
  43. SET v_ret = ( v_ret << 8 ) + v_rem;
  44. SET v_rem = '';
  45. END IF;
  46. END WHILE;
  47. RETURN v_ret;
  48. END ;;
  49.  
  50. DELIMITER ;
  51.  
  52. SELECT "Createing temp tables";
  53.  
  54. DROP TABLE IF EXISTS `geo_csv_city_blocks_ipv4`;
  55. CREATE TABLE `geo_csv_city_blocks_ipv4` (
  56. `network` VARCHAR(20) NOT NULL DEFAULT "",
  57. `ipbyte1` INT(3) unsigned NOT NULL,
  58. `ipbyte2` INT(3) unsigned NOT NULL,
  59. `ipbyte3` INT(3) unsigned NOT NULL,
  60. `ipbyte4` INT(3) unsigned NOT NULL,
  61. `netmask` INT(3) unsigned NOT NULL,
  62. `geoname_id` INT(10) unsigned NOT NULL,
  63. `rgcgeoid` INT(10) unsigned NOT NULL,
  64. `rpcgeoid` INT(10) unsigned NOT NULL,
  65. `is_anon` TINYINT(1) unsigned NOT NULL,
  66. `is_sat` TINYINT(1) unsigned NOT NULL,
  67. `postal_code` VARCHAR(32) NOT NULL DEFAULT "",
  68. `latitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  69. `longitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  70. `accuracy_radius` INT(6) unsigned NOT NULL
  71. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  72.  
  73. DROP TABLE IF EXISTS `geo_csv_city_blocks_ipv6`;
  74. CREATE TABLE `geo_csv_city_blocks_ipv6` (
  75. `network` VARCHAR(32) NOT NULL DEFAULT "",
  76. `ipword1` VARCHAR(4) NOT NULL DEFAULT "",
  77. `ipword2` VARCHAR(4) NOT NULL DEFAULT "",
  78. `ipword3` VARCHAR(4) NOT NULL DEFAULT "",
  79. `ipword4` VARCHAR(4) NOT NULL DEFAULT "",
  80. `netmask` INT(3) unsigned NOT NULL,
  81. `geoname_id` INT(10) unsigned NOT NULL,
  82. `rgcgeoid` INT(10) unsigned NOT NULL,
  83. `rpcgeoid` INT(10) unsigned NOT NULL,
  84. `is_anon` TINYINT(1) unsigned NOT NULL,
  85. `is_sat` TINYINT(1) unsigned NOT NULL,
  86. `postal_code` VARCHAR(32) NOT NULL DEFAULT "",
  87. `latitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  88. `longitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  89. `accuracy_radius` INT(6) unsigned NOT NULL
  90. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  91.  
  92. DROP TABLE IF EXISTS `geo_csv_country_blocks_ipv4`;
  93. CREATE TABLE `geo_csv_country_blocks_ipv4` (
  94. `network` VARCHAR(20) NOT NULL DEFAULT "",
  95. `ipbyte1` INT(3) unsigned NOT NULL,
  96. `ipbyte2` INT(3) unsigned NOT NULL,
  97. `ipbyte3` INT(3) unsigned NOT NULL,
  98. `ipbyte4` INT(3) unsigned NOT NULL,
  99. `netmask` INT(3) unsigned NOT NULL,
  100. `geoname_id` INT(10) unsigned NOT NULL,
  101. `rgcgeoid` INT(10) unsigned NOT NULL,
  102. `rpcgeoid` INT(10) unsigned NOT NULL,
  103. `is_anon` TINYINT(1) unsigned NOT NULL,
  104. `is_sat` TINYINT(1) unsigned NOT NULL
  105. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  106.  
  107. DROP TABLE IF EXISTS `geo_csv_country_blocks_ipv6`;
  108. CREATE TABLE `geo_csv_country_blocks_ipv6` (
  109. `network` VARCHAR(32) NOT NULL DEFAULT "",
  110. `ipword1` VARCHAR(4) NOT NULL DEFAULT "",
  111. `ipword2` VARCHAR(4) NOT NULL DEFAULT "",
  112. `ipword3` VARCHAR(4) NOT NULL DEFAULT "",
  113. `ipword4` VARCHAR(4) NOT NULL DEFAULT "",
  114. `netmask` INT(3) unsigned NOT NULL,
  115. `geoname_id` INT(10) unsigned NOT NULL,
  116. `rgcgeoid` INT(10) unsigned NOT NULL,
  117. `rpcgeoid` INT(10) unsigned NOT NULL,
  118. `is_anon` TINYINT(1) unsigned NOT NULL,
  119. `is_sat` TINYINT(1) unsigned NOT NULL
  120. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  121.  
  122. DROP TABLE IF EXISTS `geo_csv_asn_blocks_ipv4`;
  123. CREATE TABLE `geo_csv_asn_blocks_ipv4` (
  124. `network` VARCHAR(20) NOT NULL DEFAULT "",
  125. `ipbyte1` INT(3) unsigned NOT NULL,
  126. `ipbyte2` INT(3) unsigned NOT NULL,
  127. `ipbyte3` INT(3) unsigned NOT NULL,
  128. `ipbyte4` INT(3) unsigned NOT NULL,
  129. `netmask` INT(3) unsigned NOT NULL,
  130. `as_number` INT(10) unsigned NOT NULL,
  131. `as_org` VARCHAR(256) NOT NULL DEFAULT ""
  132. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  133.  
  134. DROP TABLE IF EXISTS `geo_csv_asn_blocks_ipv6`;
  135. CREATE TABLE `geo_csv_asn_blocks_ipv6` (
  136. `network` VARCHAR(32) NOT NULL DEFAULT "",
  137. `ipword1` VARCHAR(4) NOT NULL DEFAULT "",
  138. `ipword2` VARCHAR(4) NOT NULL DEFAULT "",
  139. `ipword3` VARCHAR(4) NOT NULL DEFAULT "",
  140. `ipword4` VARCHAR(4) NOT NULL DEFAULT "",
  141. `netmask` INT(3) unsigned NOT NULL,
  142. `as_number` INT(10) unsigned NOT NULL,
  143. `as_org` VARCHAR(256) NOT NULL DEFAULT ""
  144. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  145.  
  146. DROP TABLE IF EXISTS `geo_csv_country_locations`;
  147. CREATE TABLE `geo_csv_country_locations` (
  148. `geoname_id` INT(10) unsigned NOT NULL,
  149. `locale_code` VARCHAR(4) NOT NULL DEFAULT "",
  150. `cont_code` VARCHAR(4) NOT NULL DEFAULT "",
  151. `cont_name` VARCHAR(32) NOT NULL DEFAULT "",
  152. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  153. `cntr_name` VARCHAR(128) NOT NULL DEFAULT "",
  154. `is_euro` TINYINT(1) unsigned NOT NULL
  155. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  156.  
  157. DROP TABLE IF EXISTS `geo_csv_city_locations`;
  158. CREATE TABLE `geo_csv_city_locations` (
  159. `geoname_id` INT(10) unsigned NOT NULL,
  160. `locale_code` VARCHAR(4) NOT NULL DEFAULT "",
  161. `cont_code` VARCHAR(4) NOT NULL DEFAULT "",
  162. `cont_name` VARCHAR(20) NOT NULL DEFAULT "",
  163. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  164. `cntr_name` VARCHAR(128) NOT NULL DEFAULT "",
  165. `sub1_code` VARCHAR(4) NOT NULL DEFAULT "",
  166. `sub1_name` VARCHAR(80) NOT NULL DEFAULT "",
  167. `sub2_code` VARCHAR(4) NOT NULL DEFAULT "",
  168. `sub2_name` VARCHAR(80) NOT NULL DEFAULT "",
  169. `city_name` VARCHAR(128) NOT NULL DEFAULT "",
  170. `metro_code` VARCHAR(8) NOT NULL DEFAULT "",
  171. `time_zone` VARCHAR(80) NOT NULL DEFAULT "",
  172. `is_euro` TINYINT(1) unsigned NOT NULL
  173. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  174.  
  175. DROP TABLE IF EXISTS `geo_txt_timezones`;
  176. CREATE TABLE `geo_txt_timezones` (
  177. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  178. `time_zone` VARCHAR(80) NOT NULL DEFAULT "",
  179. `gmt_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0",
  180. `dst_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0",
  181. `raw_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0"
  182. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  183.  
  184. SELECT "Loading Data";
  185.  
  186. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-City-Blocks-IPv4.csv"
  187. INTO TABLE `geo_csv_city_blocks_ipv4` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  188. IGNORE 1 LINES;
  189.  
  190. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-City-Blocks-IPv6.csv"
  191. INTO TABLE `geo_csv_city_blocks_ipv6` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  192. IGNORE 1 LINES;
  193.  
  194. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-Country-Blocks-IPv4.csv"
  195. INTO TABLE `geo_csv_country_blocks_ipv4` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  196. IGNORE 1 LINES;
  197.  
  198. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-Country-Blocks-IPv6.csv"
  199. INTO TABLE `geo_csv_country_blocks_ipv6` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  200. IGNORE 1 LINES;
  201.  
  202. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-City-Locations-en.csv"
  203. INTO TABLE `geo_csv_city_locations` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  204. IGNORE 1 LINES;
  205.  
  206. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-Country-Locations-en.csv"
  207. INTO TABLE `geo_csv_country_locations` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  208. IGNORE 1 LINES;
  209.  
  210. LOAD DATA LOCAL INFILE "/storage/geoip/data/timeZones.txt"
  211. INTO TABLE `geo_txt_timezones` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  212. IGNORE 1 LINES;
  213.  
  214. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-ASN-Blocks-IPv4.csv"
  215. INTO TABLE `geo_csv_asn_blocks_ipv4` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  216. IGNORE 1 LINES;
  217.  
  218. LOAD DATA LOCAL INFILE "/storage/geoip/data/GeoLite2-CSV/GeoLite2-ASN-Blocks-IPv6.csv"
  219. INTO TABLE `geo_csv_asn_blocks_ipv6` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  220. IGNORE 1 LINES;
  221.  
  222. SELECT "Create new tables";
  223.  
  224. DROP TABLE IF EXISTS `geo_city_blocks_ipv4`;
  225. CREATE TABLE `geo_city_blocks_ipv4` (
  226. `network` VARCHAR(32) NOT NULL DEFAULT "",
  227. `ipbyte1` INT(3) unsigned NOT NULL,
  228. `ipbyte2` INT(3) unsigned NOT NULL,
  229. `ipbyte3` INT(3) unsigned NOT NULL,
  230. `ipbyte4` INT(3) unsigned NOT NULL,
  231. `netmask` INT(3) unsigned NOT NULL,
  232. `ipstart` BIGINT(20) unsigned NOT NULL,
  233. `ipend` BIGINT(20) unsigned NOT NULL,
  234. `geoname_id` INT(10) unsigned NOT NULL,
  235. `rgcgeoid` INT(10) unsigned NOT NULL,
  236. `rpcgeoid` INT(10) unsigned NOT NULL,
  237. `is_anon` TINYINT(1) unsigned NOT NULL,
  238. `is_sat` TINYINT(1) unsigned NOT NULL,
  239. `postal_code` VARCHAR(32) NOT NULL DEFAULT "",
  240. `latitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  241. `longitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  242. `accuracy_radius` INT(6) unsigned NOT NULL,
  243. PRIMARY KEY ( `network` )
  244. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  245.  
  246. DROP TABLE IF EXISTS `geo_city_blocks_ipv6`;
  247. CREATE TABLE `geo_city_blocks_ipv6` (
  248. `network` VARCHAR(32) NOT NULL DEFAULT "",
  249. `ipword1` INT(5) unsigned NOT NULL,
  250. `ipword2` INT(5) unsigned NOT NULL,
  251. `ipword3` INT(5) unsigned NOT NULL,
  252. `ipword4` INT(5) unsigned NOT NULL,
  253. `netmask` INT(3) unsigned NOT NULL,
  254. `ipstart` BIGINT(20) unsigned NOT NULL,
  255. `ipend` BIGINT(20) unsigned NOT NULL,
  256. `geoname_id` INT(10) unsigned NOT NULL,
  257. `rgcgeoid` INT(10) unsigned NOT NULL,
  258. `rpcgeoid` INT(10) unsigned NOT NULL,
  259. `is_anon` TINYINT(1) unsigned NOT NULL,
  260. `is_sat` TINYINT(1) unsigned NOT NULL,
  261. `postal_code` VARCHAR(32) NOT NULL DEFAULT "",
  262. `latitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  263. `longitude` DECIMAL(8,4) NOT NULL DEFAULT "0.0",
  264. `accuracy_radius` INT(6) unsigned NOT NULL,
  265. PRIMARY KEY ( `network` )
  266. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  267.  
  268. DROP TABLE IF EXISTS `geo_country_blocks_ipv4`;
  269. CREATE TABLE `geo_country_blocks_ipv4` (
  270. `network` VARCHAR(20) NOT NULL DEFAULT "",
  271. `ipbyte1` INT(3) unsigned NOT NULL,
  272. `ipbyte2` INT(3) unsigned NOT NULL,
  273. `ipbyte3` INT(3) unsigned NOT NULL,
  274. `ipbyte4` INT(3) unsigned NOT NULL,
  275. `netmask` INT(3) unsigned NOT NULL,
  276. `ipstart` BIGINT(20) unsigned NOT NULL,
  277. `ipend` BIGINT(20) unsigned NOT NULL,
  278. `geoname_id` INT(10) unsigned NOT NULL,
  279. `rgcgeoid` INT(10) unsigned NOT NULL,
  280. `rpcgeoid` INT(10) unsigned NOT NULL,
  281. `is_anon` TINYINT(1) unsigned NOT NULL,
  282. `is_sat` TINYINT(1) unsigned NOT NULL,
  283. PRIMARY KEY ( `network` )
  284. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  285.  
  286. DROP TABLE IF EXISTS `geo_country_blocks_ipv6`;
  287. CREATE TABLE `geo_country_blocks_ipv6` (
  288. `network` VARCHAR(32) NOT NULL DEFAULT "",
  289. `ipword1` INT(5) unsigned NOT NULL,
  290. `ipword2` INT(5) unsigned NOT NULL,
  291. `ipword3` INT(5) unsigned NOT NULL,
  292. `ipword4` INT(5) unsigned NOT NULL,
  293. `netmask` INT(3) unsigned NOT NULL,
  294. `geoname_id` INT(10) unsigned NOT NULL,
  295. `rgcgeoid` INT(10) unsigned NOT NULL,
  296. `rpcgeoid` INT(10) unsigned NOT NULL,
  297. `is_anon` TINYINT(1) unsigned NOT NULL,
  298. `is_sat` TINYINT(1) unsigned NOT NULL,
  299. PRIMARY KEY ( `network` )
  300. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  301.  
  302. DROP TABLE IF EXISTS `geo_asn_blocks_ipv4`;
  303. CREATE TABLE `geo_asn_blocks_ipv4` (
  304. `network` VARCHAR(20) NOT NULL DEFAULT "",
  305. `ipbyte1` INT(3) unsigned NOT NULL,
  306. `ipbyte2` INT(3) unsigned NOT NULL,
  307. `ipbyte3` INT(3) unsigned NOT NULL,
  308. `ipbyte4` INT(3) unsigned NOT NULL,
  309. `netmask` INT(3) unsigned NOT NULL,
  310. `ipstart` BIGINT(20) unsigned NOT NULL,
  311. `ipend` BIGINT(20) unsigned NOT NULL,
  312. `as_number` INT(10) unsigned NOT NULL,
  313. `as_org` VARCHAR(128) NOT NULL DEFAULT "",
  314. PRIMARY KEY ( `network` )
  315. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  316.  
  317. DROP TABLE IF EXISTS `geo_asn_blocks_ipv6`;
  318. CREATE TABLE `geo_asn_blocks_ipv6` (
  319. `network` VARCHAR(32) NOT NULL DEFAULT "",
  320. `ipword1` INT(5) unsigned NOT NULL,
  321. `ipword2` INT(5) unsigned NOT NULL,
  322. `ipword3` INT(5) unsigned NOT NULL,
  323. `ipword4` INT(5) unsigned NOT NULL,
  324. `netmask` INT(3) unsigned NOT NULL,
  325. `ipstart` BIGINT(20) unsigned NOT NULL,
  326. `ipend` BIGINT(20) unsigned NOT NULL,
  327. `as_number` INT(10) unsigned NOT NULL,
  328. `as_org` VARCHAR(128) NOT NULL DEFAULT "",
  329. PRIMARY KEY ( `network` )
  330. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  331.  
  332. DROP TABLE IF EXISTS `geo_city_locations`;
  333. CREATE TABLE `geo_city_locations` (
  334. `geoname_id` INT(10) unsigned NOT NULL,
  335. `locale_code` VARCHAR(4) NOT NULL DEFAULT "",
  336. `cont_code` VARCHAR(4) NOT NULL DEFAULT "",
  337. `cont_name` VARCHAR(20) NOT NULL DEFAULT "",
  338. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  339. `cntr_name` VARCHAR(80) NOT NULL DEFAULT "",
  340. `sub1_code` VARCHAR(4) NOT NULL DEFAULT "",
  341. `sub1_name` VARCHAR(80) NOT NULL DEFAULT "",
  342. `sub2_code` VARCHAR(4) NOT NULL DEFAULT "",
  343. `sub2_name` VARCHAR(80) NOT NULL DEFAULT "",
  344. `city_name` VARCHAR(80) NOT NULL DEFAULT "",
  345. `metro_code` VARCHAR(8) NOT NULL DEFAULT "",
  346. `time_zone` VARCHAR(80) NOT NULL DEFAULT "",
  347. `is_euro` TINYINT(1) unsigned NOT NULL,
  348. PRIMARY KEY ( `geoname_id` )
  349. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  350.  
  351. DROP TABLE IF EXISTS `geo_country_locations`;
  352. CREATE TABLE `geo_country_locations` (
  353. `geoname_id` INT(10) unsigned NOT NULL,
  354. `locale_code` VARCHAR(4) NOT NULL DEFAULT "",
  355. `cont_code` VARCHAR(4) NOT NULL DEFAULT "",
  356. `cont_name` VARCHAR(32) NOT NULL DEFAULT "",
  357. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  358. `cntr_name` VARCHAR(80) NOT NULL DEFAULT "",
  359. `is_euro` TINYINT(1) unsigned NOT NULL,
  360. PRIMARY KEY ( `geoname_id` )
  361. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  362.  
  363. DROP TABLE IF EXISTS `geo_timezones`;
  364. CREATE TABLE `geo_timezones` (
  365. `cntr_iso` VARCHAR(4) NOT NULL DEFAULT "",
  366. `time_zone` VARCHAR(80) NOT NULL DEFAULT "",
  367. `gmt_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0",
  368. `dst_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0",
  369. `raw_offset` DECIMAL(5,2) NOT NULL DEFAULT "0.0",
  370. PRIMARY KEY ( `time_zone` ),
  371. KEY `isokey` ( `cntr_iso` )
  372. ) ENGINE=Aria DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  373.  
  374. SELECT "Fill new tables";
  375.  
  376. -- Clean out any duplicates and create keys
  377.  
  378. INSERT IGNORE `geo_city_blocks_ipv4` ( network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,ipstart,ipend,geoname_id,
  379. rgcgeoid,rpcgeoid,is_anon,is_sat,postal_code,latitude,longitude,accuracy_radius )
  380. SELECT network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,@ipv:=(ipbyte1<<24)+(ipbyte2<<16)+(ipbyte3<<8)+ipbyte4,@ipv+(1<<(32-netmask))-1,
  381. geoname_id,rgcgeoid,rpcgeoid,is_anon,is_sat,postal_code,latitude,longitude,accuracy_radius FROM `geo_csv_city_blocks_ipv4`;
  382.  
  383. INSERT IGNORE `geo_country_blocks_ipv4` ( network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,ipstart,ipend,geoname_id,rgcgeoid,rpcgeoid,
  384. is_anon,is_sat )
  385. SELECT network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,@ipv:=(ipbyte1<<24)+(ipbyte2<<16)+(ipbyte3<<8)+ipbyte4,@ipv+(1<<(32-netmask))-1,
  386. geoname_id,rgcgeoid,rpcgeoid,is_anon,is_sat FROM `geo_csv_country_blocks_ipv4`;
  387.  
  388. INSERT IGNORE `geo_asn_blocks_ipv4` ( network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,ipstart,ipend,as_number,as_org )
  389. SELECT network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,@ipv:=(ipbyte1<<24)+(ipbyte2<<16)+(ipbyte3<<8)+ipbyte4,@ipv+(1<<(32-netmask))-1,
  390. as_number,as_org FROM `geo_csv_asn_blocks_ipv4`;
  391.  
  392. INSERT IGNORE `geo_city_blocks_ipv6` ( network,ipword1,ipword2,ipword3,ipword4,netmask,ipstart,ipend,geoname_id,rgcgeoid,rpcgeoid,
  393. is_anon,is_sat,postal_code,latitude,longitude,accuracy_radius )
  394. SELECT network,@ipv1:=conv(ipword1,16,10),@ipv2:=conv(ipword2,16,10),@ipv3:=conv(ipword3,16,10),@ipv4:=conv(ipword4,16,10),netmask,
  395. @ipv:=(@ipv1<<48)+(@ipv2<<32)+(@ipv3<<16)+@ipv4,@ipv+(1<<(64-netmask))-1,
  396. geoname_id,rgcgeoid,rpcgeoid,is_anon,is_sat,postal_code,latitude,longitude,accuracy_radius FROM `geo_csv_city_blocks_ipv6`;
  397.  
  398. INSERT IGNORE `geo_country_blocks_ipv6` (network,ipbyte1,ipbyte2,ipbyte3,ipbyte4,netmask,ipstart,ipend,geoname_id,rgcgeoid,rpcgeoid,
  399. is_anon,is_sat )
  400. SELECT network,@ipv1:=conv(ipword1,16,10),@ipv2:=conv(ipword2,16,10),@ipv3:=conv(ipword3,16,10),@ipv4:=conv(ipword4,16,10),netmask,
  401. @ipv:=(@ipv1<<48)+(@ipv2<<32)+(@ipv3<<16)+@ipv4,@ipv+(1<<(64-netmask))-1,
  402. geoname_id,rgcgeoid,rpcgeoid,is_anon,is_sat FROM `geo_csv_country_blocks_ipv6`;
  403.  
  404. INSERT IGNORE `geo_asn_blocks_ipv6` (
  405. network,ipword1,ipword2,ipword3,ipword4,netmask,ipstart,ipend,as_number,as_org )
  406. SELECT network,@ipv1:=conv(ipword1,16,10),@ipv2:=conv(ipword2,16,10),@ipv3:=conv(ipword3,16,10),@ipv4:=conv(ipword4,16,10),netmask,
  407. @ipv:=(@ipv1<<48)+(@ipv2<<32)+(@ipv3<<16)+@ipv4,@ipv+(1<<(64-netmask))-1,
  408. as_number,as_org FROM `geo_csv_asn_blocks_ipv6`;
  409.  
  410. INSERT IGNORE `geo_city_locations` SELECT * FROM `geo_csv_city_locations`;
  411. INSERT IGNORE `geo_country_locations` SELECT * FROM `geo_csv_country_locations`;
  412.  
  413. SELECT "Add table keys";
  414.  
  415. ALTER TABLE `geo_city_blocks_ipv4`
  416. ADD UNIQUE KEY `ipnumkey` ( `ipstart`,`ipend` ),
  417. ADD KEY `geoidkey` ( `geoname_id` ),
  418. ADD KEY `regidkey` ( `rgcgeoid` ),
  419. ADD KEY `repidkey` ( `rpcgeoid` ),
  420. ADD KEY `anonkey` ( `is_anon` ),
  421. ADD KEY `satkey` ( `is_sat` ),
  422. ADD KEY `latkey` ( `latitude` ),
  423. ADD KEY `lonkey` ( `longitude` );
  424.  
  425. ALTER TABLE `geo_city_blocks_ipv6`
  426. ADD UNIQUE KEY `ipnumkey` ( `ipstart`,`ipend` ),
  427. ADD KEY `geoidkey` ( `geoname_id` ),
  428. ADD KEY `regidkey` ( `rgcgeoid` ),
  429. ADD KEY `repidkey` ( `rpcgeoid` ),
  430. ADD KEY `anonkey` ( `is_anon` ),
  431. ADD KEY `satkey` ( `is_sat` ),
  432. ADD KEY `latkey` ( `latitude` ),
  433. ADD KEY `lonkey` ( `longitude` );
  434.  
  435. ALTER TABLE `geo_country_blocks_ipv4`
  436. ADD UNIQUE KEY `ipnumkey` ( `ipstart`,`ipend` ),
  437. ADD KEY `geoidkey` ( `geoname_id` ),
  438. ADD KEY `regidkey` ( `rgcgeoid` ),
  439. ADD KEY `repidkey` ( `rpcgeoid` ),
  440. ADD KEY `anonkey` ( `is_anon` ),
  441. ADD KEY `satkey` ( `is_sat` );
  442.  
  443. ALTER TABLE `geo_country_blocks_ipv6`
  444. ADD UNIQUE KEY `ipnumkey` ( `ipstart`,`ipend` ),
  445. ADD KEY `geoidkey` ( `geoname_id` ),
  446. ADD KEY `regidkey` ( `rgcgeoid` ),
  447. ADD KEY `repidkey` ( `rpcgeoid` ),
  448. ADD KEY `anonkey` ( `is_anon` ),
  449. ADD KEY `satkey` ( `is_sat` );
  450.  
  451. ALTER TABLE `geo_asn_blocks_ipv4`
  452. ADD KEY `asnkey` ( `as_number` );
  453.  
  454. ALTER TABLE `geo_asn_blocks_ipv6`
  455. ADD KEY `asnkey` ( `as_number` );
  456.  
  457. ALTER TABLE `geo_city_locations`
  458. ADD KEY `lockey` ( `locale_code` ),
  459. ADD KEY `contkey` ( `cont_code` ),
  460. ADD KEY `cisokey` ( `cntr_iso` ),
  461. ADD KEY `cnamkey` ( `cont_name`,`cntr_name`,`city_name` ),
  462. ADD KEY `rnamkey` ( `city_name`,`cntr_name`,`cont_name` ),
  463. ADD KEY `eurokey` ( `is_euro` );
  464.  
  465. ALTER TABLE `geo_country_locations`
  466. ADD KEY `lockey` ( `locale_code` ),
  467. ADD KEY `contkey` ( `cont_code` ),
  468. ADD KEY `cisokey` ( `cntr_iso` ),
  469. ADD KEY `eurokey` ( `is_euro` ),
  470. ADD KEY `cnamkey` ( `cont_name`,`cntr_name` );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement