мы это сделали через so-модуль и определили свой базовый тип данных, который по интерфейсу как string, а хранится как int
эти функции открывают и парсят внешний файл (CSV, например), в котором описано соответствие
мне это показалось удобным и гибким
так как результат ф-ции в постгресе кешируется, файл будет считываться 1 раз
кому интересно - для определения своего типа на С пишутся 2 функции для обработки данных на входе и на выходе, описание операторов и тип
потом эти функции декларируются в постгресе
все подробно с примерами описано в документации