Получить схему Oracle

Есть ли способ получить схему оракула в C#? Вот что мне нужно: Tables_Name, Table Columns_Name, Первичные ключи, Уникальные ключи, Внешние ключи

4 ответа

Имена таблиц:

select * from user_tables

Имена столбцов таблицы:

select * from user_tab_columns

Первичные ключи, уникальные ключи, иностранные ключи:

select * from user_constraints

В целом:

select * from dictionary

чтобы увидеть все возможные виды системы, которые вы можете использовать.

Если вы хотите использовать фактический DDL для создания таблиц и т.д., вы можете использовать dbms_metadata.get_ddl, который возвращает CLOB.

Например:

select dbms_metadata.get_ddl('TABLE','MY_TABLE') from dual;

Я использую OracleConnection.GetSchema метод. Я написал себе вспомогательный метод для извлечения из таблицы.

private class SchemaInfo
{
    public bool Mandatory { get; set; }
    public int MaxLength { get; set; }
}

private Dictionary<string, SchemaInfo> _getSchemaInfo(OracleConnection _cn, string owner, string tableName)
{
    DataTable _dt = _cn.GetSchema("Columns", new string[3] { owner, tableName, null });
    Dictionary<string, SchemaInfo> _dict = new Dictionary<string, SchemaInfo>();
    for (int x = 0; x < _dt.Rows.Count; x++)
    {
        DataRow _r = _dt.Rows[x];
        SchemaInfo _si = new SchemaInfo();
        object maxl = _r.ItemArray[10];
        if (maxl == DBNull.Value) maxl = -1;
        _si.Mandatory = (_r.ItemArray[8].ToString().Equals("N")) ? true : false;
        _si.MaxLength = Convert.ToInt32((maxl ?? 0));
        _dict.Add(_r.ItemArray[2].ToString(), _si);
    }
    return _dict;
}

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

Если вы хотите получить таблицы, используйте Connection.GetSchema("Tables", new string[3] { owner, null, null });

Использовать DBMS_METADATA пакет. Например, чтобы получить CREATE скрипты для всех таблиц, вы должны сделать:

SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name)
  FROM USER_ALL_TABLES u

Таким образом, без особых усилий вы можете получить DDL-скрипты для всей схемы. И есть еще примеры на DBMS_METADATA страница документации.

Вы можете выбирать из таблиц словаря данных в Oracle так же, как и любые другие таблицы. Вот обсуждение таблиц словаря данных - Data Dictionary

Другие вопросы по тегам