Работа в Oracle 10g. Простой способ перечислить все имена таблиц (выберите имя_таблицы из dba_tables, где owner = 'me') Но теперь, когда у меня есть имена таблиц, есть ли простой способ их прокрутки и последовательное «описать» на каждом из них?Имена таблиц и цикл для описания
ответ
Вы можете запросить запрос DBA_TAB_COLUMNS (или USER_TAB_COLUMNS).
Николас.
И не забудьте отсортировать их соответствующим образом (в COLUMN_ID), иначе столбцы не будут выглядеть так, как вы ожидаете. – MJB
Не уверен, что вы можете описать из PL/SQL. Я просто попытался использовать execute immediate 'describe some_table'
, что тоже не работает. Следующий выбор - запросить DBA_TAB_COLUMNS или создать новый файл со всеми вашими инструкциями описания (используя dbms_output из pl/sql и spool для создания файла), а затем выполнить этот файл. Может быть, как это:
spool temp_file.sql
BEGIN
/*or you could have a loop here with as many put_lines as you need, it will all end up in the new script file.*/
dbms_output.put_line('describe some_table');
END;
/
spool off
@temp_file.sql
/*I have not actually tried running this code, beware syntax errors!*/
Вы не можете сделать это из PL/SQL - вы правы. Это потому, что «описать», например «набор», «копировать» и некоторые другие команды, на самом деле является командой SQLPlus, а не оператором SQL. Поэтому вне этой среды вы не можете ее выполнить. Вы можете сказать, потому что он не требует выполнения терминальной полуколоны. Операторы SQL, независимо от того, являются ли они DML или DDL, для отправки в базу данных требуют полуколония или какой-либо завершающий символ, отличный от [Enter]. – MJB
Я рекомендовал бы запрашивая dba_tab_columns, как это было предложено Н. Gasparotto, но если вы действительно хотите описать выход затем создать файл MULIT-describe.sql со следующим:
set pagesize 0
set termout off
set feedback off
set verify off
spool mdtmp.sql
select 'describe ' || owner || '.' || table_name
from dba_tables
where OWNER = upper('&1')
/
spool off
set termout on
@mdtmp.sql
в SQL * PLUS управляет:
@multi-describe ME
Ничего страшного, это правильный ответ –
Вы можете сделать это в PL/SQL с помощью DBMS_METADATA.GET_DDL, например, (Пример взят из документации):
SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;
вход с пользователем, а затем выполнить следующие команды, первый файл будет содержать описания команд, а второй файл будет нужный файл, содержащий все описания всех столы для зарегистрированного пользователя
spool desctables.sql select 'describe '||table_name||';' from user_tables; spool off spool alltables.txt @desctables.sql spool off
Это сработало отлично для меня, у меня было несколько проблем, потому что первая строка командной строки была слишком длинной (у меня было 500 таблиц), поэтому я разбил ее на партии по 100, после чего мне пришлось удалить «command>» вверху и внизу, наконец мне пришлось удалить «< " and " >», который завернул каждую инструкцию описания (я, вероятно, должен был отключить ее). Спасибо! – JGlass
- 1. Имена объектов и имена таблиц
- 2. Сочетание таблиц описания нескольких кодов
- 3. таблиц и имена переменных - MATLAB
- 4. имена матриц и таблиц/dimnames
- 5. MySql Полусинхронные имена таблиц
- 6. Динамически меняющиеся имена таблиц
- 7. Запрос, чтобы вытащить все имена таблиц и имена столбцов
- 8. Имена таблиц MySql и имена полей в котировках
- 9. Цикл через сохраненные имена и пропуска пробелов
- 10. Ограничения на имена таблиц
- 11. Объединенные имена таблиц SQL
- 12. JPA Прописные имена таблиц
- 13. имена таблиц и столбцов вызывает проблемы
- 14. Имена таблиц с пробелами - PYMSSQL и MSSQL
- 15. Место для описания таблицы
- 16. Laravel Query builder и имена таблиц
- 17. Обработка SQL зарезервированы имена таблиц и столбцов
- 18. Получить имена таблиц
- 19. SQL и полностью квалифицированные имена таблиц
- 20. Ссылка на имена пользователей ASP.NET для таблиц
- 21. Как персонализировать имена таблиц для ACL?
- 22. Пронумеровать имена таблиц для поиска данных
- 23. SQL Parser: - получить имена таблиц и столбцов
- 24. Префикс И имена плюрализованных таблиц в EF6?
- 25. знать имена таблиц и делает подсчет
- 26. извлекать имена таблиц и столбцов из кода
- 27. Rais 4:: has_many,: сквозные и имена таблиц
- 28. Выберите имена столбцов и типы таблиц
- 29. уникальные имена столбцов для списка таблиц данных
- 30. Динамические имена таблиц с Linq для объектов?
Легче сделать "выбрать table_name из user_tables;" чем запрос dba_tables с предложением where. – MJB
Возможный дубликат [описать запрос с помощью oracle (.Net Connector)] (http://stackoverflow.com/questions/867731/describe-query-with-oracle-net-connector) – DCookie