Мы пытаемся создать файл резервной копии для каждой схемы базы данных в нашем многопользовательском приложении.
Мы получаем список имен схем, выполняя что-то вроде:
$ psql -d PG_DATABASE -t -c "select schema_name from information_schema.schemata;" | grep 'tenant_'
А затем при выполнении резервного копирования каждой схемы:
$ pg_dump -d PG_DATABASE --format=plain -n SCHEMA_NAME -f output.sql
Но у нас возникают проблемы с именами схем UTF-8, такими как tenant_eléctrico
:
$ pg_dump -d PG_DATABASE --format=plain -n "tenant_eléctrico" -f output.sql
pg_dump: last built-in OID is 16383
pg_dump: [archiver (db)] query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xe3 0xa9 0x63
pg_dump: [archiver (db)] query was: SELECT oid FROM pg_catalog.pg_namespace n
WHERE n.nspname OPERATOR(pg_catalog.~) '^(tenant_el�ctrico)$'
Мы уже пробовали с кавычками и без них (одинарные и двойные кавычки), пытаясь экранировать специальный символ как шестнадцатеричный... без какого-либо хорошего результата.
Как я могу вызвать pg_dump
с именем схемы, которое включает допустимые символы UTF-8? На данный момент я использую PostgreSQL 9.6.15.
Возможно, мы удалим эти специальные символы в ближайшем будущем, но если пока есть способ сделать эти резервные копии, было бы здорово.
Заранее спасибо!