You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.4 KiB
133 lines
4.4 KiB
CREATE OR REPLACE PROCEDURE pro_create_table() |
|
RETURNS VOID AS $$ |
|
DECLARE |
|
year VARCHAR(4); |
|
sqlStr TEXT; |
|
table_name VARCHAR(100); |
|
is_exists INTEGER; |
|
BEGIN |
|
-- 获取当前年份 |
|
year := TO_CHAR(CURRENT_DATE, 'YYYY'); |
|
|
|
-- 判断是否存在 data_min + 当前年份 的表 |
|
table_name := 'data_min' || year; |
|
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name; |
|
IF is_exists = 0 THEN |
|
sqlStr := 'CREATE TABLE ' || table_name || ' ( |
|
id BIGSERIAL PRIMARY KEY, |
|
device_num VARCHAR(20), |
|
device_code VARCHAR(20), |
|
device_type VARCHAR(100), |
|
last_value NUMERIC(24,2), |
|
last_time TIMESTAMP, |
|
cur_value NUMERIC(24,2), |
|
cur_time TIMESTAMP, |
|
used_value NUMERIC(24,2), |
|
ratio INTEGER, |
|
calc_value NUMERIC(24,2), |
|
grade INTEGER, |
|
UNIQUE (device_num, cur_time) |
|
); |
|
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)'; |
|
RAISE NOTICE '%', sqlStr; |
|
EXECUTE sqlStr; |
|
END IF; |
|
|
|
-- 判断是否存在 data_hour + 当前年份 的表 |
|
table_name := 'data_hour' || year; |
|
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name; |
|
IF is_exists = 0 THEN |
|
sqlStr := 'CREATE TABLE ' || table_name || ' ( |
|
id BIGSERIAL PRIMARY KEY, |
|
device_num VARCHAR(20), |
|
device_code VARCHAR(20), |
|
device_type VARCHAR(100), |
|
last_value NUMERIC(24,2), |
|
last_time TIMESTAMP, |
|
cur_value NUMERIC(24,2), |
|
cur_time TIMESTAMP, |
|
used_value NUMERIC(24,2), |
|
ratio INTEGER, |
|
calc_value NUMERIC(24,2), |
|
grade INTEGER, |
|
UNIQUE (device_num, cur_time) |
|
); |
|
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)'; |
|
RAISE NOTICE '%', sqlStr; |
|
EXECUTE sqlStr; |
|
END IF; |
|
|
|
-- 判断是否存在 data_day + 当前年份 的表 |
|
table_name := 'data_day' || year; |
|
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name; |
|
IF is_exists = 0 THEN |
|
sqlStr := 'CREATE TABLE ' || table_name || ' ( |
|
id BIGSERIAL PRIMARY KEY, |
|
device_num VARCHAR(20), |
|
device_code VARCHAR(20), |
|
device_type VARCHAR(100), |
|
last_value NUMERIC(24,2), |
|
last_time TIMESTAMP, |
|
cur_value NUMERIC(24,2), |
|
cur_time TIMESTAMP, |
|
used_value NUMERIC(24,2), |
|
ratio INTEGER, |
|
calc_value NUMERIC(24,2), |
|
grade INTEGER, |
|
UNIQUE (device_num, cur_time) |
|
); |
|
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)'; |
|
RAISE NOTICE '%', sqlStr; |
|
EXECUTE sqlStr; |
|
END IF; |
|
|
|
-- 判断是否存在 data_month 的表 |
|
table_name := 'data_month'; |
|
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name; |
|
IF is_exists = 0 THEN |
|
sqlStr := 'CREATE TABLE ' || table_name || ' ( |
|
id BIGSERIAL PRIMARY KEY, |
|
device_num VARCHAR(20), |
|
device_code VARCHAR(20), |
|
device_type VARCHAR(100), |
|
last_value NUMERIC(24,2), |
|
last_time TIMESTAMP, |
|
cur_value NUMERIC(24,2), |
|
cur_time TIMESTAMP, |
|
used_value NUMERIC(24,2), |
|
ratio INTEGER, |
|
calc_value NUMERIC(24,2), |
|
grade INTEGER, |
|
UNIQUE (device_num, cur_time) |
|
); |
|
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)'; |
|
RAISE NOTICE '%', sqlStr; |
|
EXECUTE sqlStr; |
|
END IF; |
|
|
|
-- 判断是否存在 data_year 的表 |
|
table_name := 'data_year'; |
|
SELECT COUNT(*) INTO is_exists FROM pg_tables WHERE tablename = table_name; |
|
IF is_exists = 0 THEN |
|
sqlStr := 'CREATE TABLE ' || table_name || ' ( |
|
id BIGSERIAL PRIMARY KEY, |
|
device_num VARCHAR(20), |
|
device_code VARCHAR(20), |
|
device_type VARCHAR(100), |
|
last_value NUMERIC(24,2), |
|
last_time TIMESTAMP, |
|
cur_value NUMERIC(24,2), |
|
cur_time TIMESTAMP, |
|
used_value NUMERIC(24,2), |
|
ratio INTEGER, |
|
calc_value NUMERIC(24,2), |
|
grade INTEGER, |
|
UNIQUE (device_num, cur_time) |
|
); |
|
CREATE INDEX cls_' || table_name || ' ON ' || table_name || ' (cur_time DESC)'; |
|
RAISE NOTICE '%', sqlStr; |
|
EXECUTE sqlStr; |
|
END IF; |
|
|
|
END; |
|
$$ LANGUAGE plpgsql;
|
|
|