Excel新冠死亡数据导入PGAdmin(PostgreSQL)的字段类型及操作咨询
Our World in Data新冠死亡数据PostgreSQL导入方案
一、表头对应PostgreSQL数据类型
以下为OWID公开新冠死亡数据集常用表头及适配的PG数据类型,如果你自己的Excel有字段删减可对应调整:
- iso_code:
VARCHAR(10),国家/地区ISO标准编码 - continent:
VARCHAR(20),大洲名称 - location:
VARCHAR(50),国家/地区全称 - date:
DATE,统计日期,原生日期类型适配度最高 - 所有数值类统计字段(累计确诊、新增死亡、各类比率、人口、经济指标等):统一用
NUMERIC,避免整数/浮点类型出现的精度丢失、空值适配问题 - 文本类枚举字段(如检测单位tests_units):
VARCHAR(20)
注意:如果你的Excel里空值填了NA、Null这类字符,导入前先统一清空为空白单元格,避免数值类型转换报错。
二、创建适配表结构
直接执行以下SQL即可生成对应表:
CREATE TABLE owid_covid_deaths ( iso_code VARCHAR(10), continent VARCHAR(20), location VARCHAR(50), date DATE, total_cases NUMERIC, new_cases NUMERIC, new_cases_smoothed NUMERIC, total_deaths NUMERIC, new_deaths NUMERIC, new_deaths_smoothed NUMERIC, total_cases_per_million NUMERIC, new_cases_per_million NUMERIC, new_cases_smoothed_per_million NUMERIC, total_deaths_per_million NUMERIC, new_deaths_per_million NUMERIC, new_deaths_smoothed_per_million NUMERIC, reproduction_rate NUMERIC, icu_patients NUMERIC, icu_patients_per_million NUMERIC, hosp_patients NUMERIC, hosp_patients_per_million NUMERIC, weekly_icu_admissions NUMERIC, weekly_icu_admissions_per_million NUMERIC, weekly_hosp_admissions NUMERIC, weekly_hosp_admissions_per_million NUMERIC, new_tests NUMERIC, total_tests NUMERIC, total_tests_per_thousand NUMERIC, new_tests_per_thousand NUMERIC, new_tests_smoothed NUMERIC, new_tests_smoothed_per_thousand NUMERIC, positive_rate NUMERIC, tests_per_case NUMERIC, tests_units VARCHAR(20), total_vaccinations NUMERIC, people_vaccinated NUMERIC, people_fully_vaccinated NUMERIC, total_boosters NUMERIC, new_vaccinations NUMERIC, new_vaccinations_smoothed NUMERIC, total_vaccinations_per_hundred NUMERIC, people_vaccinated_per_hundred NUMERIC, people_fully_vaccinated_per_hundred NUMERIC, total_boosters_per_hundred NUMERIC, new_vaccinations_smoothed_per_million NUMERIC, new_people_vaccinated_smoothed NUMERIC, new_people_vaccinated_smoothed_per_hundred NUMERIC, stringency_index NUMERIC, population NUMERIC, population_density NUMERIC, median_age NUMERIC, aged_65_older NUMERIC, aged_70_older NUMERIC, gdp_per_capita NUMERIC, extreme_poverty NUMERIC, cardiovasc_death_rate NUMERIC, diabetes_prevalence NUMERIC, female_smokers NUMERIC, male_smokers NUMERIC, handwashing_facilities NUMERIC, hospital_beds_per_thousand NUMERIC, life_expectancy NUMERIC, human_development_index NUMERIC, excess_mortality_cumulative_absolute NUMERIC, excess_mortality_cumulative NUMERIC, excess_mortality NUMERIC, excess_mortality_cumulative_per_million NUMERIC ); -- 可选:给常用查询字段加索引提升速度 CREATE INDEX idx_owid_covid_location ON owid_covid_deaths(location); CREATE INDEX idx_owid_covid_date ON owid_covid_deaths(date);
三、Excel到PostgreSQL的导入操作
方法1:PGAdmin图形化导入(适合小数据量、新手)
- 先处理Excel文件:确认第一行是表头,日期格式统一为
YYYY-MM-DD,空值单元格清空,将文件另存为CSV(逗号分隔)格式,编码选择UTF-8避免乱码 - 打开PGAdmin连接到实例,找到刚才创建的
owid_covid_deaths表,右键选择「Import/Export Data」 - 导入配置:选择「Import」,文件路径选刚才导出的CSV,编码选UTF8,格式选csv,勾选「Header」(表示第一行是表头),分隔符选逗号
,,空值字符串填"" - 切换到Columns选项卡确认CSV列和表列一一对应,点击确认即可完成导入
方法2:命令导入(适合大数据量,速度更快)
- 同样先把Excel转成UTF-8编码的CSV文件
- 本地部署的PostgreSQL直接在查询工具执行以下命令,替换对应文件路径即可:
COPY owid_covid_deaths FROM 'C:/your_file_path/owid-covid-data.csv' -- Windows路径用正斜杠,Mac/Linux填对应路径 DELIMITER ',' CSV HEADER ENCODING 'UTF8';
- 连接远程PostgreSQL实例的话,用psql执行
\copy命令,不需要服务端文件权限:
\copy owid_covid_deaths FROM '/local_file_path/owid-covid-data.csv' DELIMITER ',' CSV HEADER ENCODING 'UTF8';
如果导入时报格式错误,优先检查Excel里的特殊字符、多余逗号,也可以导出CSV时用制表符分隔,把命令里的
DELIMITER ','改成DELIMITER E'\t'即可。
内容的提问来源于stack exchange,提问作者angry_bird
相关产品推荐
相关产品推荐

