2015-06-26 4 views
0

Я искал какое-то время, и я ничего не нашел на этом. Я пытаюсь получить имена столбцов всех таблиц из базы данных SPECIFIC через ODBC. Я пытался использовать conn.GetSchema("Tables") и conn.GetSchema("Columns"). Проблема в том, что он возвращает все таблицы внутри моего сервера.
У меня есть несколько баз данных (база данных «Продукты питания», «Куки» и т. Д.), И я пытаюсь получить Таблицы и столбцы из одной конкретной базы данных (т. Е. Только «Продовольствие»). В моей строке подключения указывается правильная база данных, но она, кажется, игнорируется, когда я использую GetSchema.Выбор конкретной базы данных в odbc C#

Любой может помочь? Вот код, я использую сейчас

  DataTable tables = conn.GetSchema("Tables"); 
      DataTable columns = conn.GetSchema("Columns"); 

      foreach (DataRow r in tables.Rows) 
      { 
       string name = r["TABLE_NAME"].ToString(); 
      } 
      foreach (DataRow row in columns.Rows) 
      { 
       string name = row["COLUMN_NAME"].ToString(); 

       if (!allMongoInfo.ContainsKey(name)) //Dictionary 
        issuesImpala.Add (name);   
      } 
+0

Какую базу данных вы используете? – Steve

+0

Я использую драйвер ODBC Cloudera для Impala –

ответ

0

Я не уверен, если это может работать с драйвером ODBC, но это путь, чтобы получить только одну таблицу и/или столбцы этой таблицы, используя GetSchema метод с OdbcConnection

using (OdbcConnection con = new OdbcConnection("......")) 
{ 
    con.Open(); 
    var schema = con.GetSchema("Tables", new string[] {null, null, "yourTableName"}); 
    var cols = con.GetSchema("Columns", new string[] {null, null, "yourTableName"}); 
} 

этой перегрузки методы GetSchema принимает массив строк, которые представляют ограничения на возвращенных данных.
Вы можете узнать больше о значениях для ограничения параметра в этой статье на MSDN Schema Restrictions

+0

Но где я могу ввести конкретную базу данных? –

+0

Это указано в строке подключения. Я опустил здесь, потому что у меня нет данных, но его нужно записать, заменяя точки в операторе using. – Steve

+0

Однако у меня нет опыта работы с этой базой данных, поэтому, возможно, его следует указать, используя ограничение для КАТАЛОГА (см. ссылка выше) – Steve

Смежные вопросы