• 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    DROP PROCEDURE IF EXISTS `cSpatials_Country`;


    ## Written by Richie Bartlett (LoreZyra)
    ## Stored Procedure for MySQL 5.0
    ## Purpose: to process imported csv data in GeoIPCountryWhois from MaxMind.com - CountryBlocks;
    ## Will automatically create the spatial data to enhance searching performance;
    ## Version: 1.2
    ## NOTE: error handling NOT supported in MySQL 5.0, but MySQL 5.5 does support...
    DELIMITER //
    CREATE DEFINER=`rirodev1`@`localhost` PROCEDURE rblogger0.`cSpatials_Country`(
    #IN tableFrom nVARCHAR(255),
    #IN tableTo nVARCHAR(255),
    OUT outMsg VARCHAR(255)
    ) COMMENT 'process csv table from GeoIPCountryWhois.csv [creates spatial data]'
    BEGIN
    #DECLARE err int;
    DECLARE g polygon;
    DECLARE gt VARCHAR(255);
    DECLARE done INT DEFAULT 0;
    DECLARE IPStart INT;
    DECLARE IPEnd INT;
    DECLARE blnFlag1 TINYINT(1);
    DECLARE blnFlag2 TINYINT(1);
    DECLARE ISO CHAR(2);
    DECLARE strText VARCHAR(255);
    DECLARE cur1 CURSOR FOR SELECT `start`,`end`,`cc`FROM rblogger0.`csv`;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    SET outMsg:='Error: required tables dont exist!';#DEFAULT err msg
    #SET blnFlag1:=table_exist('rblogger0',@tableFrom);#csv
    #SET blnFlag2:=table_exist('rblogger0',@tableTo); #geoCountryIP
    SET blnFlag1:=table_exist('rblogger0','csv');
    SET blnFlag2:=table_exist('rblogger0','geoCountryIP');

    #IF blnFlag2=FALSE AND @tableFrom<>@tableTo THEN
    IF blnFlag2=FALSE THEN
    ## auto create missing table!
    CREATE TABLE `geoCountryIP` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `ipPoly` POLYGON NOT NULL, SPATIAL INDEX(ipPoly),
    `IPnumStart` int( 16 ) unsigned NOT NULL COMMENT 'calculated IP number',
    INDEX(`IPnumStart`),
    `IPnumEnd` int( 16 ) unsigned NOT NULL COMMENT 'calculated IP number',
    `ISO3166` char( 2 ) collate utf8_unicode_ci default NULL
    ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
    SET blnFlag2:=1;
    SET outMsg:='Note: created destination Table';
    END IF;#table_exist

    #IF blnFlag1=TRUE AND blnFlag2=TRUE AND @tableFrom<>@tableTo THEN
    IF blnFlag1=TRUE AND blnFlag2=TRUE THEN
    #TRUNCATE TABLE @tableTo; #rblogger0.geoCountryIP2;#empty input table
    TRUNCATE TABLE `rblogger0`.`geoCountryIP`;#empty input table

    OPEN cur1;

    START TRANSACTION;

    read_loop: LOOP
    FETCH cur1 INTO IPStart,IPEnd,ISO;
    IF done THEN LEAVE read_loop; END IF;
    SELECT CONCAT('POLYGON(LINESTRING(POINT(',IPStart,',-1), POINT(',IPEnd,',-1), POINT(',IPEnd,',1), POINT(',IPStart,',1), POINT(',IPStart,',-1)))') INTO gt;
    #SELECT GeomFromText(gt) INTO g;

    IF gt IS NULL THEN LEAVE read_loop; END IF;
    IF gt IS NOT NULL THEN
    SELECT GeomFromWKB(POLYGON(LINESTRING(POINT(IPStart,-1), POINT(IPEnd,-1), POINT(IPEnd,1), POINT(IPStart,1), POINT(IPStart,-1)))) INTO g;
    #INSERT INTO @tableTo values('', g, IPStart, IPEnd, ISO);
    INSERT INTO `geoCountryIP` values('', g, IPStart, IPEnd, ISO);
    END IF;
    #SELECT @err = @@error IF @err <> 0 BEGIN ROLLBACK TRANSACTION RETURN @err END;
    #SELECT @err = coalesce(nullif(@err, 0), @@error)
    #IF @err <> 0 THEN LEAVE read_loop; END IF;
    END LOOP;

    CLOSE cur1;

    COMMIT;# TRANSACTION;
    #SET strText:='Processed import from GeoIPCountryWhois.csv';
    SELECT CONCAT(strText,' ',NOW()) INTO strText;
    #ALTER TABLE @tableTo COMMENT = strText;
    ALTER TABLE `geoCountryIP` COMMENT = 'Processed import from GeoIPCountryWhois.csv';
    DROP TABLE `csv`;
    END IF;#table_exist

    SET outMsg:=gt;
    END; # // #PROCEDURE
    DELIMITER;

    ########################################################################

    CALL cSpatials_Country(
    'csv','geoCountryIP',@returnMsg
    );
    CALL cSpatials_Country(@returnMsg);
    SELECT @returnMsg;

    ########################################################################
    DROP PROCEDURE IF EXISTS `cSpatials_IPblocks`;


    ## Written by Richie Bartlett (LoreZyra)
    ## Stored Procedure for MySQL 5.0
    ## Purpose: to process imported csv data in GEOipTABLE from MaxMind.com - IPBlocks;
    ## Will automatically create the spatial data to enhance searching performance;
    ## Version: 1.0
    ## NOTE: error handling NOT supported in MySQL 5.0, but MySQL 5.5 does support...
    DELIMITER //
    CREATE DEFINER=`rirodev1`@`localhost` PROCEDURE rblogger0.`cSpatials_IPblocks`(
    OUT outMsg VARCHAR(255)
    ) COMMENT 'process csv table from GeoLiteCity-Blocks.csv [creates spatial data]'
    BEGIN
    #DECLARE err int;
    DECLARE g polygon;
    DECLARE gt VARCHAR(255);
    DECLARE done INT DEFAULT 0;
    DECLARE IPStart INT;
    DECLARE IPEnd INT;
    DECLARE blnFlag1 TINYINT(1);
    DECLARE blnFlag2 TINYINT(1);
    DECLARE Loc INT;
    DECLARE strText VARCHAR(255);
    DECLARE cur1 CURSOR FOR SELECT `start`,`end`,`ci` FROM rblogger0.`ip`;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    SET outMsg:='Error: required tables dont exist!';#DEFAULT err msg
    SET blnFlag1:=table_exist('rblogger0','ip');
    SET blnFlag2:=table_exist('rblogger0','geoIPblocks');

    IF blnFlag2=FALSE THEN
    ## auto create missing table!
    CREATE TABLE `geoIPblocks` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `ipPoly` POLYGON NOT NULL, SPATIAL INDEX(ipPoly),
    `IPnumStart` int( 16 ) unsigned NOT NULL COMMENT 'calculated IP number',
    `IPnumEnd` int( 16 ) unsigned NOT NULL COMMENT 'calculated IP number',
    INDEX(`IPnumStart`),
    `locID` bigint( 20 ) default 0 NOT NULL COMMENT 'ref to geoCityLoc.id'
    ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
    SET blnFlag2:=1;
    SET outMsg:='Note: created destination Table';
    END IF;#table_exist

    IF blnFlag1=TRUE AND blnFlag2=TRUE THEN
    TRUNCATE TABLE `rblogger0`.`geoIPblocks`;#empty input table

    OPEN cur1;

    START TRANSACTION;

    read_loop: LOOP
    FETCH cur1 INTO IPStart,IPEnd,Loc;
    IF done THEN LEAVE read_loop; END IF;
    SELECT CONCAT('POLYGON(LINESTRING(POINT(',IPStart,',-1), POINT(',IPEnd,',-1), POINT(',IPEnd,',1), POINT(',IPStart,',1), POINT(',IPStart,',-1)))') INTO gt;
    #SELECT GeomFromText(gt) INTO g;

    IF gt IS NULL THEN LEAVE read_loop; END IF;
    IF gt IS NOT NULL THEN
    SELECT GeomFromWKB(POLYGON(LINESTRING(POINT(IPStart,-1), POINT(IPEnd,-1), POINT(IPEnd,1), POINT(IPStart,1), POINT(IPStart,-1)))) INTO g;
    INSERT INTO `geoIPblocks` values('', g, IPStart, IPEnd, Loc);
    END IF;
    #SELECT @err = @@error IF @err <> 0 BEGIN ROLLBACK TRANSACTION RETURN @err END;
    #SELECT @err = coalesce(nullif(@err, 0), @@error)
    #IF @err <> 0 THEN LEAVE read_loop; END IF;
    END LOOP;

    CLOSE cur1;

    COMMIT;# TRANSACTION;
    ALTER TABLE `geoIPblocks` COMMENT = 'Processed import from GeoLiteCity-Blocks.csv';
    DROP TABLE `ip`;
    END IF;#table_exist

    SET outMsg:=gt;
    END; # // #PROCEDURE
    DELIMITER;

    ########################################################################

    CALL cSpatials_IPblocks(@returnMsg);
    SELECT @returnMsg;

    ########################################################################

    DROP FUNCTION IF EXISTS `table_exist`;

    ## Written by Richie Bartlett (LoreZyra)
    ## Stored Function for MySQL 5.0
    ## Purpose: to determine if a table exists;
    ## Version: 1.0
    DELIMITER //
    CREATE FUNCTION `table_exist`
    (
    s_database_name nvarchar(255),
    s_table_name nvarchar(255)
    )
    RETURNS TINYINT
    BEGIN
    DECLARE existFlag TINYINT DEFAULT 0;

    IF EXISTS (
    SELECT 1 FROM Information_schema.tables
    WHERE TABLE_TYPE ='BASE TABLE' AND TABLE_NAME = s_table_name AND TABLE_SCHEMA = s_database_name
    ) THEN SET existFlag:=1;

    end if;
    RETURN existFlag;
    END//
    DELIMITER ;

    ########################################################################

    Set @tableFlag:=table_exist('rblogger0','geoCountryIP');
    SELECT @tableFlag;

    ########################################################################

    CREATE TABLE `rblogger0`.`geoCityLoc` (
    `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `ISO3166` VARCHAR( 4 ) NULL ,
    `ISO3166_2` VARCHAR( 2 ) NULL ,
    `cityName` VARCHAR( 255 ) NULL ,
    `PostalCode` VARCHAR( 16 ) NULL ,
    `lat` DECIMAL( 11, 7 ) NOT NULL DEFAULT '0',
    `lng` DECIMAL( 11, 7 ) NOT NULL DEFAULT '0',
    `metroCode` VARCHAR( 16 ) NULL ,
    `areaCode` VARCHAR( 16 ) NULL
    ) ENGINE = MYISAM COMMENT = 'GeoLiteCity-Location.csv'

    ########################################################################

    DROP PROCEDURE IF EXISTS `prepMaxMindImport`;

    ## Written by Richie Bartlett (LoreZyra)
    ## Stored PROCEDURE for MySQL 5.0
    ## Purpose: prepare to import CSV data from MaxMind.com;
    ## Version: 1.0
    DELIMITER //
    CREATE DEFINER=`rirodev1`@`localhost` PROCEDURE rblogger0.`prepMaxMindImport`(
    ) COMMENT 'Prepare tables for csv data from MaxMind.com'
    BEGIN
    DROP TABLE IF EXISTS `csv`;
    CREATE TABLE `csv` (
    `start_ip` char(15)NOT NULL,
    `end_ip` char(15)NOT NULL,
    `start` int(10) unsigned NOT NULL,
    `end` int(10) unsigned NOT NULL,
    `cc` char(2) NOT NULL,
    `cn` varchar(64) NOT NULL
    ) COMMENT 'GeoIPCountryWhois.csv';

    DROP TABLE IF EXISTS `ip`;
    CREATE TABLE `ip` (
    `start` int(10) unsigned NOT NULL,
    `end` int(10) unsigned NOT NULL,
    `ci` tinyint(3) unsigned NOT NULL
    ) COMMENT 'GeoLiteCity-Blocks.csv';

    END // #PROCEDURE
    DELIMITER;
    ########################################################################

    DROP PROCEDURE IF EXISTS `resetWebAnalytics`;

    ## Written by Richie Bartlett (LoreZyra)
    ## Stored PROCEDURE for MySQL 5.0
    ## Purpose: prepare to import CSV data from MaxMind.com;
    ## Version: 1.0
    DELIMITER //
    CREATE DEFINER=`rirodev1`@`localhost` PROCEDURE rblogger0.`resetWebAnalytics`(
    ) COMMENT 'dumps/resets all web tracking data'
    BEGIN
    TRUNCATE TABLE `rblogger0`.`siteReferrer`;
    TRUNCATE TABLE `rblogger0`.`siteTracker`;
    TRUNCATE TABLE `rblogger0`.`site_stats_date`;
    TRUNCATE TABLE `rblogger0`.`site_stats_hour`;
    TRUNCATE TABLE `rblogger0`.`site_stats_month`;
    TRUNCATE TABLE `rblogger0`.`site_stats_year`;
    TRUNCATE TABLE `rblogger0`.`site_stat_Counter`;

    END // #PROCEDURE
    DELIMITER;
    Prev:
    Our Body's Insulin Sensitivity
    Next:
    Alcohol and Dieting