Я перенес Oracle дБ в Аврору postgreSQL с помощью инструмента AWS SCT. Все пакеты и триггеры конвертируются как функции в PostgreSQL. Моя проблема здесь заключается в том, что все имена конвертированы с символом $
(доллар).
например, пакет и связанный с ним сохраненный pro c в Oracle pk_audit.sp_get_audit
, преобразованный в postgreSQL как pk_audit$sp_get_audit
с символом $. но в промежуточном программном обеспечении имя объекта базы данных pk_audit.sp_get_audit
. Чтобы минимизировать нагрузку на промежуточное ПО, мне нужно преобразовать все функции из pk_audit$sp_get_audit
в pk_audit.sp_get_audit
.
У меня более 1500 функций, преобразованных с помощью символа $. Нужен скрипт для изменения всех имен пользовательских функций. Я создал сценарий для создания сценариев изменения.
`select a.alter_statement|| replace(a.rename_statement,'$','.')
From
(
SELECT format('ALTER %s %I.%I(%s)'
, 'FUNCTION'
,CONCAT('"',n.nspname,'"')
, p.proname
, pg_catalog.pg_get_function_identity_arguments(p.oid)
) AS alter_statement,
format('RENAME %s %I.%I(%s);'
, 'TO'
, CONCAT('"',n.nspname,'"')
, p.proname
, pg_catalog.pg_get_function_identity_arguments(p.oid)
) AS rename_statement
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
and n.nspname = 'my_schema' ORDER BY 1
) a;`
Но в результате выдается ошибка. Пожалуйста, помогите спасибо