【发布时间】:2019-03-29 14:34:26
【问题描述】:
我正在创建一个包含国家和年份特定数据的数据库。我有一张国家/地区表,其中包括每个国家/地区的名称、联合国代码(数字)、2 位字母代码、3 位字母代码和 ISO 代码。
此数据库中还有许多其他表,每个表的行都包含国家代码、年份和感兴趣的数据点。例如,“总人口”表的每一行都将包括年份、人口数据以及记录对应的国家/地区的 UN、alpha-2、alpha-3 和 ISO 代码。因此,对于任何给定的国家,都会有很多记录(每年一个)。
挑战:我从多个来源获取数据,而不同的来源使用不同的编码系统。我正在使用 CSV 文件导入所有数据。例如,下面是为国家表加载数据的查询。
LOAD DATA LOCAL INFILE 'data/countryCodes.csv'
INTO TABLE Countries
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(country_name, alpha2_code, alpha3_code, un_code, iso_code);
当然,任何给定的联合国代码仅对应一个 2 位字母代码、一个 3 位字母代码和一个 ISO 代码。我希望能够导入仅包含其中一个代码的 CSV,并让数据库自动填充每一行的其他代码条目。例如,如果我导入了联合国代码编码的人口数据,数据库将自动引用国家表中相应的其他代码并插入适当的值。
有没有办法用 SQL 做到这一点?如果我在数据库中创建此功能,则系统化不同类型数据之间的服务器端和客户端关联会容易得多。
【问题讨论】: