-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema-io.sql
executable file
·80 lines (73 loc) · 2.75 KB
/
schema-io.sql
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
CREATE SCHEMA IF NOT EXISTS $MYSQL_DATABASE;
CREATE TABLE IF NOT EXISTS share
(
ID INTEGER NOT NULL AUTO_INCREMENT,
PLAYER INTEGER NOT NULL,
CHANNEL INTEGER NOT NULL,
SHARE VARCHAR(200) NOT NULL,
MAC_SHARE VARCHAR(200) NULL,
CREATION_DATE TIMESTAMP NOT NULL DEFAULT NOW(),
CONSTRAINT share_id
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS cint
(
ID INTEGER NOT NULL AUTO_INCREMENT,
PLAYER INTEGER NOT NULL,
CHANNEL INTEGER NOT NULL,
VALUE VARCHAR(200) NOT NULL,
CREATION_DATE TIMESTAMP NOT NULL DEFAULT NOW(),
CONSTRAINT integer_id
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS regint
(
ID INTEGER NOT NULL AUTO_INCREMENT,
PLAYER INTEGER NOT NULL,
CHANNEL INTEGER NOT NULL,
VALUE VARCHAR(200) NOT NULL,
CREATION_DATE TIMESTAMP NOT NULL DEFAULT NOW(),
CONSTRAINT integer_id
PRIMARY KEY (ID)
);
CREATE TABLE IF NOT EXISTS gfp
(
ID INTEGER NOT NULL AUTO_INCREMENT,
PLAYER INTEGER NOT NULL,
CHANNEL INTEGER NOT NULL,
VALUE VARCHAR(200) NOT NULL,
CREATION_DATE TIMESTAMP NOT NULL DEFAULT NOW(),
CONSTRAINT integer_id
PRIMARY KEY (ID)
);
DELIMITER //
DROP PROCEDURE IF EXISTS InsertBatchData;
CREATE PROCEDURE InsertBatchData(IN batch_size INT, IN channel_id INT, IN player_id INT, IN input_string MEDIUMTEXT)
BEGIN
DECLARE total_records INT;
DECLARE records_processed INT DEFAULT 0;
DECLARE current_record MEDIUMTEXT;
-- Get the total number of records in the input string
SET total_records = batch_size;
-- Start the transaction
START TRANSACTION;
WHILE records_processed < total_records DO
-- Extract each record from the input string
SET current_record = SUBSTRING_INDEX(input_string, ';', 1);
SET input_string = SUBSTRING(input_string, LENGTH(current_record) + 2); -- 1 for the semicolon
-- Extract the rest of the values from the current record
SET @share_value = SUBSTRING_INDEX(current_record, ' ', 1);
IF INSTR(current_record, ' ') > 0 THEN
SET @mac_share_value = SUBSTRING_INDEX(current_record, ' ', -1);
ELSE
SET @mac_share_value = '';
END IF;
-- Insert the record into the table
INSERT INTO share (player, channel, share, mac_share)
VALUES (player_id, channel_id, @share_value, @mac_share_value);
SET records_processed = records_processed+1;
END WHILE;
-- Commit any remaining records
COMMIT;
END //
DELIMITER ;