@volhvrod-qq

Как найти определенное слово в Postgresql?

Мне надо найти слово rakomkakom по всей подключенной Postgres к приложению. Я знаю, что слово хранится в базе, но ни о таблицах, ни о столбцах мне ничего не известно. Каким запросом это сделать?
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Делаете дамп базы в файл и ищите слово текстовым редактором.
В каком Insert предложении будет искомый текст, в той таблице, куда применяется insert нужно смотреть.
Ответ написан
Комментировать
Lorien_Elf
@Lorien_Elf
Keep calm and drop database
Ну как-то так:
select 'select * from ' || t1.table_schema || '.' || t1.table_name || ' where ' || t2.column_name || ' like ''%rakomkakom%'';' 
from information_schema.tables t1 
  right join information_schema.columns t2 
    on t1.table_name = t2.table_name 
    and t1.table_schema = t2.table_schema 
where t1.table_name not like 'pg%' 
and t1.table_schema not in ('pg_catalog', 'information_schema')
and (
  t2.data_type in ('text', 'bpchar')
  or t2.data_type like 'character%'
);

Вывод направить в файл, файл выполнить.

Лучше конечно допилить запрос, чтобы таблица не сканировалась несколько раз на каждую текстовую колонку. Но боюсь совсем код перегружать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы