Postgresql, похоже, не поддерживает транскодирование имен столбцов при копировании в формате csv. Я думаю, это то, что вы просите? Однако вы можете структурировать команду «copy» для переименования столбцов по мере необходимости.
Так, например, если я создаю таблицу так:
steve@steve@[local] =# copy csvtest to stdout with csv header;
id,value
1,Telewizja Polska zawiesiła dzisiejszą emisję programu
Вы можете сделать так, чтобы он перекодировал данные во что-то другое:
steve@steve@[local] =# set client_encoding = 'iso8859-2';
SET
steve@steve@[local] =# copy csvtest to stdout with csv header;
id,value
1,Telewizja Polska zawiesi�a dzisiejsz� emisj� programu
Но если вы определяете имена столбцов в национальных символах:
steve@steve@[local] =# reset client_encoding ;
RESET
steve@steve@[local] =# copy (select id as id, value as "emisję" from csvtest) to stdout with csv header;
id,emisję
1,Telewizja Polska zawiesiła dzisiejszą emisję programu
Тогда они не транскодируются:
steve@steve@[local] =# set client_encoding = 'iso8859-2';
SET
steve@steve@[local] =# copy (select id as id, value as "emisję" from csvtest) to stdout with csv header;
id,emisję
1,Telewizja Polska zawiesi�a dzisiejsz� emisj� programu
Предположительно, UTF-8, который я посылаю как часть команды COPY, просто возвращается ко мне без декодирования.