Oracle поиск таблицы во всех схемах

Получить список всех таблиц в Oracle?

Как запросить базу данных Oracle, чтобы отобразить имена всех таблиц в ней?

Это предполагает, что у вас есть доступ к представлению DBA_TABLES словаря данных. Если у вас нет этих привилегий, но они нужны, вы можете запросить, чтобы администратор БД явно предоставил вам привилегии для этой таблицы, или чтобы администратор БД предоставил вам SELECT ANY DICTIONARY привилегию или SELECT_CATALOG_ROLE роль (любая из которых позволит вам запросить любую таблицу словаря данных). ). Конечно, вы можете захотеть исключить определенные схемы, такие как SYS и SYSTEM имеющие большое количество таблиц Oracle, которые вам, вероятно, не нужны .

Кроме того, если у вас нет доступа DBA_TABLES , вы можете просмотреть все таблицы, к которым у вашей учетной записи есть доступ, через ALL_TABLES представление:

Хотя это может быть подмножеством таблиц, доступных в базе данных ( ALL_TABLES показывает информацию обо всех таблицах, к которым у вашего пользователя есть доступ).

Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :

Поскольку он USER_TABLES содержит информацию только о тех таблицах, которыми вы владеете, у него нет OWNER столбца — владельцем по определению является вы.

Oracle также имеет ряд устаревших данных словаря views— TAB , DICT , TABS и CAT для example— , которые можно было бы использовать. В целом, я бы не советовал использовать эти устаревшие представления, если вам абсолютно не нужно перенести свои сценарии в Oracle 6. Oracle не изменяла эти представления в течение длительного времени, поэтому у них часто возникают проблемы с объектами более новых типов. Например, TAB и CAT представления, и представления показывают информацию о таблицах, которые находятся в корзине пользователя, в то время как [DBA|ALL|USER]_TABLES все представления отфильтровывают их. CAT также показывает информацию о материализованных журналах представлений с TABLE_TYPE «TABLE», что вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кто владеет объектом.

Источник

Поиск значения поля по всей базе

Добрый день! учусь работать с Oracle 11

Малознакомая мне БД, 600 таблиц, мне необходимо найти поле и его значение по всей базе, смог получить только список таблиц с данным полем:

Поиск по всей базе
Подскажите, можно ли сделать поиск значения по всей базе? Например мне в базе нужно найти номер.

Изменение значения поля во всей базе данных
Здравствуйте! Требуется изменить значение поля language_id со значением 2, на значение 1 во всей.

Поиск по всей базе
Здравствуйте! Есть БД, в которой имеется множество таблиц. Я знаю, что в колонке Name одной из.

Поиск по всей базе и вывод в таблицу
доброй ночи, прошу помочь разобраться в коде поиска в этом совершенно новичок не могу ее найти и.

Вообще задача достаточно редкая и уж всяко не для начинающего. Опиши задачу, возможно это решается другими средствами.

Вообще задача достаточно редкая и уж всяко не для начинающего. Опиши задачу, возможно это решается другими средствами.

Хм.
Если колонка ДОЛЖНА содержать определенное(ные) значение, то это должно как-то контролироваться. На уровне приложения, с пом. constraint или триггера. Иначе это нарушение целостности данных, при том, что сохранение целостности данных является одним из основополагающих принципов реляционных СУБД. Если это до того никак не контролировалось, то это пример плохого дизайна БД.

Но если уж сильно надо (например, учебная задача), то принцип я изложил в приведенной ссылке.

Источник

Поиск определенного значения во всех полях всех таблиц (Oracle)

Можно ли в Oracle искать в каждом поле каждой таблицы определенное значение?

Существуют сотни таблиц с тысячами строк в некоторых таблицах, поэтому я знаю, что запрос может занять очень много времени. Но единственное, что я знаю, это то, что значение поля, которое я хотел бы запросить, равно 1/22/2008P09RR8 . sql oracle search plsql database-table

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

Столбец — это не объект. Если вы имеете в виду, что ожидаете, что имя столбца будет иметь вид «% DTN%», то вам нужен следующий запрос:

Но если строка ‘DTN’ — это всего лишь предположение с вашей стороны, это, вероятно, не поможет.

Кстати, насколько вы уверены, что «1/22 / 2008P09RR8» — это значение, выбранное непосредственно из одного столбца? Если вы совсем не знаете, откуда он исходит, это может быть объединение нескольких столбцов, или результат какой-либо функции, или значение, находящееся во вложенном табличном объекте. Так что вы можете быть на охоте, пытаясь проверить каждый столбец на это значение. Разве вы не можете начать с любого клиентского приложения, отображающего это значение, и попытаться выяснить, какой запрос он использует для его получения?

В любом случае, ответ diciu дает один метод генерации SQL-запросов для проверки значения каждого столбца каждой таблицы. Вы также можете делать аналогичные вещи полностью в одном сеансе SQL, используя блок PL / SQL и динамический SQL. Вот для этого наспех написанный код:

Есть несколько способов сделать его более эффективным.

В этом случае, учитывая искомое значение, вы можете однозначно исключить любой столбец, имеющий тип NUMBER или DATE, что уменьшит количество запросов. Может быть, даже ограничить его столбцами, где тип подобен «% CHAR%».

Вместо одного запроса на столбец вы можете создать один запрос на таблицу следующим образом:

Источник

Найти все таблицы, содержащие столбец с указанным именем — MS SQL Server

Можно ли запросить имена таблиц, которые содержат столбцы

ОТВЕТЫ

Ответ 1

Таблицы поиска:

Поиск таблиц и просмотров:

Ответ 2

Мы также можем использовать следующий синтаксис: —

Ответ 3

  • ПРОСТО КАК ТОТ!! (SQL, PL/SQL)
    Я использую это ВСЕ время, чтобы найти ВСЕ экземпляры имени столбца в заданной базе данных (схеме).

Ответ 4

Ответ 5

Если вы больше используете сторонние инструменты, там есть много вариантов, таких как:

Это очень удобно, если ваша база данных содержит зашифрованные объекты (представления, процедуры, функции), потому что вы не можете легко найти их с помощью системных таблиц.

Ответ 6

Здесь вы получите немного дополнительной информации о схеме, таблицах и столбцах, которые вы можете или не можете использовать для фильтрации в дополнительных условиях. Например, если вы хотите видеть только те поля, которые должны иметь значения, добавьте

Вы можете добавить другие условия, я также добавил столбцы в предложении select по вертикали, чтобы было легко переупорядочивать, удалять, переименовывать или добавлять другие в зависимости от ваших потребностей. С другой стороны, вы можете искать только таблицы с помощью T.Name. Его очень настраиваемый.

Ответ 7

Я не знаю, почему многие из вас предлагают присоединиться к sys.table with sys.columns вы можете просто использовать ниже код:

Select object_name(object_id) as TableName,* from SYS.columns where name LIKE ‘%MyName%’

Если вы хотите также имя схемы:

Ответ 8

Если вы просто хотите, чтобы имя таблицы можно было запустить:

Если вы хотите также имя схемы (что во многих случаях вы будете иметь, так как у вас будет много разных схем, и если вы не сможете запомнить каждую таблицу в базе данных и где она принадлежит, это может быть полезно ) run:

и, наконец, если вы хотите его в более удобном формате (хотя здесь код (по-моему) становится слишком сложным для удобного написания):

Заметьте, что вы также можете создать функцию, основанную на том, что у меня есть:

Стоит отметить, что функция concat была добавлена ​​в 2012 году. Для 2008r2 и более ранних версий используйте + для конкатенации строк.

Я немного переформатировал proc, так как я разместил это. Он немного более продвинутый, но выглядит намного более грязным (но это в proc, поэтому вы никогда его не увидите), и он отформатирован лучше.

Эта версия позволяет вам иметь ее в административной базе данных, а затем искать через любую базу данных. Измените отклонение @db с ‘master’ на то, что вы хотите, чтобы база данных по умолчанию была (ПРИМЕЧАНИЕ. Использование функции CONCAT() будет работать только с 2012+, если вы не измените конкатенацию строк для использования операторов + ).

Ответ 9

Ответ 10

Вы можете найти его из INFORMATION_SCHEMA.COLUMNS с помощью фильтра column_name

Ответ 11

Ответ 12

Ответ 13

Следующий запрос даст вам точные имена таблиц базы данных с именем поля, например ‘% myName’.

Ответ 14

Получить полную информацию: имя столбца, имя таблицы, а также схему таблицы.

Ответ 15

Я только что попробовал, и это отлично работает

Измените имя YourDatbaseName на свою базу данных и имя вашего столбца на имя столбца, которое вы ищете, оставите его как есть.

Ответ 16

Ответ 17

Я использовал это для той же цели, и он работал:

Ответ 18

Надеюсь, это не дубликат ответа, но я хотел бы сгенерировать инструкцию sql в инструкции sql, которая позволит мне искать значения, которые я ищу (а не только таблицы с именами полей ( как обычно для меня, чтобы удалить любую информацию, связанную с идентификатором имени столбца, которое я ищу):

Затем я могу скопировать и вставить запустить мой 1-й столбец «SQLToRun». затем я заменю «Выбрать * из» на «Удалить из», и он позволяет мне удалять любые ссылки на этот идентификатор! файл, чтобы вы имели их на всякий случай.

ПРИМЕЧАНИЕ **** Убедитесь, что вы удалили все таблицы bakup до запуска своего оператора delete.

Ответ 19

Ответ 20

Как и оракул, вы можете найти таблицы и столбцы с этим:

Ответ 21

Для Oracle, с обычными разрешениями пользователя:

Ответ 22

Чтобы улучшить ответы выше, я включил Views, а также объединил схему и таблицу/просмотр, сделав результаты более очевидными.

Ответ 23

Вы можете использовать таблицу [INFORMATION_SCHEMA].[COLUMNS] для поиска столбцов Например,

Для получения информации о таблице и столбце для данного SQL-запроса посетите http://www.w3hattrick.com/2016/05/getting-table-and-column-information.html

Ответ 24

Вы можете попробовать этот запрос:

Ответ 25

Ответ 26

Ответ 27

Ответ 28

Вот рабочее решение для базы данных Sybase

Ответ 29

Поиск по именам столбцов базы данных SQL возможен с помощью SQL Server Management Studio следующими способами, с помощью поиска объектов SSMS: подробности об объектном обозревателе или сценарии T-SQL, как описано ниже:

Ответ 30

Вот решение, которое я нашел.

Я думаю, что это лучший ответ для вас. если есть вопросы, пожалуйста, спросите у меня.

Источник

Получить список всех таблиц в Oracle?

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

ОТВЕТЫ

Ответ 1

Предполагается, что у вас есть доступ к представлению словаря данных DBA_TABLES . Если у вас нет этих привилегий, но они нуждаются в них, вы можете запросить, чтобы администратор базы данных явно предоставлял вам привилегии в этой таблице или что администратор базы данных предоставляет вам привилегию SELECT ANY DICTIONARY или SELECT_CATALOG_ROLE (любой из которых позволит вам для запроса любой таблицы словаря данных). Конечно, вы можете исключить некоторые схемы, такие как SYS и SYSTEM , которые имеют большое количество таблиц Oracle, которые вам, вероятно, не волнует.

В качестве альтернативы, если у вас нет доступа к DBA_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ, через представление ALL_TABLES :

Хотя это может быть подмножество таблиц, доступных в базе данных ( ALL_TABLES показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).

Если вас интересуют только те таблицы, которые у вас есть, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :

Так как USER_TABLES имеет только информацию о собственных таблицах, у нее нет столбца OWNER — владелец, по определению, вы.

Oracle также имеет ряд устаревших видов словарей данных — TAB , DICT , TABS и CAT например — которые могут быть использованы. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, представления TAB и CAT отображают информацию о таблицах, которые находятся в корзине пользователя, в то время как теги [DBA|ALL|USER]_TABLES все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице «ТАБЛИЦА», которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Ответ 2

Запрос user_tables и dba_tables не работает.
Это сделал:

Ответ 3

Идя еще на один шаг, существует другое представление, называемое cols (all_tab_columns), которое может использоваться для определения того, какие таблицы содержат заданное имя столбца.

чтобы найти все таблицы, имеющие имя, начинающееся с EST, и столбцы, содержащие CALLREF в любом месте их имен.

Это может помочь при разработке тех столбцов, к которым вы хотите присоединиться, например, в зависимости от ваших соглашений об именах таблиц и столбцов.

Ответ 4

Для лучшего просмотра с помощью sqlplus

Если вы используете sqlplus , вы можете сначала настроить несколько параметров для более удобного просмотра, если ваши столбцы становятся искалеченными (эти переменные не должны сохраняться после выхода из сеанса sqlplus ):

Показать все таблицы

Затем вы можете использовать что-то вроде этого, чтобы увидеть все имена таблиц:

Показать таблицы, которыми вы владеете

Как упоминает @Justin Cave, вы можете использовать это, чтобы отображать только те таблицы, которые у вас есть:

Не забывайте о представлениях

Имейте в виду, что некоторые «таблицы» могут быть «видами», поэтому вы также можете попробовать запустить что-то вроде:

Результаты

Это должно привести к тому, что выглядит довольно приемлемым, например:

Ответ 5

Простой запрос для выбора таблиц для текущего пользователя:

Ответ 6

Ответ 7

Попробуйте просмотреть словарные данные ниже.

Ответ 8

Существует 3 данных для этого

DBA_TABLES описывает все реляционные таблицы в базе данных.

Описание реляционных таблиц, доступных пользователю

USER_TABLES описывает реляционные таблицы, принадлежащие текущему пользователю. Это представление не отображает столбец ВЛАДЕЛЕЦ.

Ответ 9

Попробуйте выбрать user_tables, в котором перечислены таблицы, принадлежащие текущему пользователю.

Ответ 10

С помощью любого из них вы можете выбрать:

Ответ 11

База данных Oracle для отображения имен всех таблиц, используя запрос ниже

Ответ 12

предоставляет все таблицы всех пользователей только в том случае, если пользователь, с которым вы вошли в систему, имеет привилегии sysdba .

Ответ 13

Ниже приведен закомментированный фрагмент SQL-запросов, описывающий, как можно использовать параметры:

Ответ 14

Вы можете использовать Oracle Data Dictionary, чтобы получить информацию об объектах oracle.

Вы можете получить список таблиц по-разному:

Затем вы можете получить столбцы таблицы, используя имя таблицы:

Затем вы можете получить список зависимостей (триггеры, представления и т.д.):

Затем вы можете получить текстовый источник этих объектов:

И вы можете использовать USER или ALL представления вместо DBA , если хотите.

Ответ 15

Я не нашел ответа, который указывал бы на использование

так решил добавить мою версию. Этот вид фактически возвращает больше, чем DBA_TABLES, поскольку он возвращает также таблицы объектов (http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).

Ответ 16

Ответ 17

Мы можем получить все таблицы, включая детали столбцов, из запроса ниже:

Ответ 18

Следующий запрос содержит только список необходимых данных, тогда как другие ответы дали мне дополнительные данные, которые меня только смутили.

Ответ 19

Новая функция, доступная в SQLcl (это бесплатный интерфейс командной строки для Oracle Database),

Tables псевдоним.

Вот несколько примеров, показывающих использование и дополнительные аспекты функции. Сначала подключитесь к sql.exe командной строки sql ( sql.exe в windows). Рекомендуется вводить эту конкретную команду sqlcl перед выполнением любых других команд или запросов, которые отображают данные.

Чтобы узнать, на что ссылается псевдоним tables , вы можете просто использовать alias List

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

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;

После этого вы можете просто передать имя схемы в качестве аргумента.

SQL> tables_schema HR

Более сложный предопределенный псевдоним известен как Tables2 , который отображает несколько других столбцов.

Чтобы узнать, какой запрос выполняется в фоновом режиме, введите

Это покажет вам немного более сложный запрос вместе с предопределенными определениями column обычно используемыми в SQL * Plus.

Джефф Смит объясняет больше об псевдонимах здесь

Ответ 20

Я искал список всех имен столбцов, принадлежащих таблице схемы, отсортированный по порядку идентификатора столбца.

Вот запрос, который я использую: —

Ответ 21

Действительно, список таблиц можно получить с помощью запросов SQL. Это можно сделать также с помощью инструментов, которые позволяют создавать словари данных, такие как ERWIN, Toad Data Modeler или ERBuilder. С этими инструментами, в дополнение к именам таблиц, у вас будут поля, их типы, объекты типа (триггеры, последовательности, домен, представления. )

Ниже приведены шаги, которые необходимо выполнить для создания определения таблиц:

  1. Вы должны перепроектировать вашу базу данных
    • В Toad Data Modeler: Меню → Файл → Реверс инжиниринг → Мастер реинжиниринга
    • В ERBuilder Data Modeler: Меню → Файл → Обратный инженер

Ваша база данных будет отображаться в программном обеспечении в виде диаграммы отношений сущностей.

  1. Создайте свой словарь данных, который будет содержать ваше определение таблиц
    • В Моделе данных жаб: Меню → Модель → Создать отчет → Выполнить
    • В ERBuilder Data Modeler: Меню → Инструмент → создать документацию модели

Источник

Оцените статью
REMNABOR
Adblock
detector