Запрос на поиск всех вхождений строки в базе данных - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь найти конкретную строку в моей базе данных. В настоящее время я использую FlameRobin для открытия файла FDB, но, похоже, у этого программного обеспечения нет функции для этой задачи.

Я попробовал следующий SQL-запрос, но у меня ничего не вышло:

SELECT
  *
FROM
  *
WHERE
  * LIKE '126278'

В конце концов, что является лучшим решением для этого? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы не можете делать такие вещи.Но вы можете преобразовать свой файл FDB в текстовый файл, такой как CSV, чтобы вы могли искать свою строку во всех таблицах / файлах одновременно.

1.Скачать конвертер базы данных

Для начала вам понадобится программа для конвертации файла базы данных.Я рекомендую использовать Full Convert для этого.Просто получите бесплатную пробную версию и загрузите ее.Он действительно прост в использовании и экспортирует каждую таблицу в отдельный файл CSV.

2.Найти вашу строку в нескольких файлах одновременно

Для этой задачи вы можете использовать функцию Найти в файлах Блокнот ++ для поиска строки во всех CSV-файлах, расположенныхв той же папке.

3.Откройте нужную таблицу на FlameRobin

Когда Notepad ++ выделит строку, она показывает, в каком файле она находится, и номер строки.Full Convert сохраняет каждый CSV с тем же именем, что и исходная таблица, поэтому вы можете легко найти его в любом используемом вами программном обеспечении менеджера баз данных.

0 голосов
/ 23 января 2019

Вот документация Firebird: https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25.html

Вам нужно прочитать о

  1. Хранимых процедурах «по выбору», команда
  2. execute statement,включая for execute statement вариант
  3. системных таблиц, имеющих «отношение» в именах.

Затем в вашем SP вы перечисляете все таблицы, а затем перечисляете все столбцы в этихтаблиц, затем для каждой из них вы запускаете обычное

       select 'tablename', 'columnname', columnname 
       from tablename 
       where columnname containing '12345'

для каждого поля каждой таблицы.


Но, фактически, скорее всего, было бы лучше избегать команд SQLи просто извлечь ВСЕ базы данных в длинный SQL-скрипт и открыть его в Блокноте (или любом другом текстовом редакторе) и там найти нужную вам строку.

...