如何在PostgreSQL中插入指定年份范围及对应月份?
生成1961-2019年年份+月份数据并插入PostgreSQL表
1. 先创建年份月份表(如果还没建)
如果还没有存储年份月份的表,先建一个,保证年份和月份的组合唯一,避免重复数据:
CREATE TABLE IF NOT EXISTS year_month ( id SERIAL PRIMARY KEY, year INT NOT NULL, month INT NOT NULL, UNIQUE(year, month) );
2. 批量插入1961-2019年的所有月份数据
用PostgreSQL自带的generate_series函数快速生成年份和月份的组合,一次性插入:
INSERT INTO year_month (year, month) SELECT years.year, months.month FROM generate_series(1961, 2019) AS years(year), generate_series(1, 12) AS months(month) ON CONFLICT (year, month) DO NOTHING; -- 已有数据则跳过,防止报错
3. 验证插入结果
执行以下查询确认数据是否正确生成:
SELECT year, month FROM year_month ORDER BY year, month;
额外提示
如果需要和气候数据表关联,直接用year和month字段做关联条件即可。如果需要日期类型的字段(比如每月第一天),可以给表新增字段并赋值:
ALTER TABLE year_month ADD COLUMN month_first_day DATE; UPDATE year_month SET month_first_day = MAKE_DATE(year, month, 1);
内容的提问来源于stack exchange,提问作者Samyr de Souza Pereira
相关产品推荐
相关产品推荐

