Используйте этот запрос на выборку, чтобы получить все таблицы и ее столбцы (столбцы с типом данных текста или характер изменения, так как вы хотите обновить текстовое поле)
SELECT column_name,table_name
FROM information_schema.columns
WHERE table_schema='public'
AND (data_type ='text' OR data_type ='character varying')
AND table_name in (SELECT table_name
FROM information_schema.tables
WHERE table_schema='public' AND table_type ='BASE TABLE')
Wrap это в динамическом SQL для обновления в соответствии вашим критериям
DO
$$
DECLARE
rw record;
BEGIN
FOR rw IN
SELECT 'UPDATE '||C.table_name||' SET '||C.column_name||' = REPLACE ('||C.COLUMN_NAME||',''Center'',''Centre''); ' QRY
FROM (SELECT column_name,table_name
FROM information_schema.columns
WHERE table_schema='public'
AND (data_type ='text' OR data_type ='character varying')
AND table_name in (SELECT table_name
FROM information_schema.tables
WHERE table_schema='public'
AND table_type ='BASE TABLE'))c
LOOP
EXECUTE rw.QRY;
END LOOP;
END;
$$;
Как ответил в самом вопросе, который вы связали с: 'update table set field = replace (поле, 'cat', 'dog')'. Сделайте это для каждой таблицы (и поля), если это необходимо. Для оптового изменения вы также можете сбросить данные, найти/заменить в файле .sql и повторно импортировать. –
Я пытался сделать это, но не смог заменить всю базу данных. –
Это потому, что вы не можете. Вы можете изменять только одну таблицу за раз, поэтому нужно перебирать список всех таблиц и запускать запрос со всеми применимыми столбцами для каждой таблицы. Или, если вы уверены, что хотите сделать это оптом, выгрузите данные, найдите/замените, повторно импортируйте. –