Я создаю базу данных по странам и годам. У меня есть таблица стран, которая включает название каждой страны, код ООН (числовой), двухзначный буквенный код, трехзначный буквенный код и код ISO.
В этой базе данных будет много других таблиц, строки которых содержат коды стран, год и интересующую точку данных. Например, строки таблицы «общая численность населения» будут включать год, численность населения и коды ООН, альфа-2, альфа-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? Если я создам эту функцию в базе данных, будет намного проще систематизировать связи между сервером и клиентом между различными типами данных.