Узнать схему таблицы - PullRequest
1 голос
/ 16 июня 2020

Я подключен к базе данных, и когда я делаю этот запрос:

SELECT table_name FROM information_schema.tables

, я получаю список:

       table_name
1      dt_2019
2      dt_2020

Но я хочу узнать схему, в которой таблица «dt_2019» есть, поэтому я могу сделать этот запрос:

SELECT dt_2019 FROM schema_that_i_don't_know

, и желаемый результат будет та таблица dt_2019

Как я могу это сделать?

1 Ответ

0 голосов
/ 16 июня 2020

Я делаю вывод, когда вы говорите «узнать схему» вы имеете в виду каталог, схему, имя и т. Д. c ... есть еще одна мета-таблица, которую вы часто можете использовать. По крайней мере, в SQL Сервере есть:

# con <- DBI::dbConnect(...)
str(DBI::dbGetQuery(con, "
  select *
  from information_schema.columns
  where table_name = 'r2test'"))
# 'data.frame': 3 obs. of  23 variables:
#  $ TABLE_CATALOG           : chr  "mydb" "mydb" "mydb"
#  $ TABLE_SCHEMA            : chr  "db_owner" "db_owner" "db_owner"
#  $ TABLE_NAME              : chr  "r2test" "r2test" "r2test"
#  $ COLUMN_NAME             : chr  "a" "b" "c"
#  $ ORDINAL_POSITION        : int  1 2 3
#  $ COLUMN_DEFAULT          : chr  NA NA NA
#  $ IS_NULLABLE             : chr  "YES" "YES" "YES"
#  $ DATA_TYPE               : chr  "int" "nvarchar" "real"
#  $ CHARACTER_MAXIMUM_LENGTH: int  NA -1 NA
#  $ CHARACTER_OCTET_LENGTH  : int  NA -1 NA
#  $ NUMERIC_PRECISION       : int  10 NA 24
#  $ NUMERIC_PRECISION_RADIX : int  10 NA 2
#  $ NUMERIC_SCALE           : int  0 NA NA
#  $ DATETIME_PRECISION      : int  NA NA NA
#  $ CHARACTER_SET_CATALOG   : chr  NA NA NA
#  $ CHARACTER_SET_SCHEMA    : chr  NA NA NA
#  $ CHARACTER_SET_NAME      : chr  NA "UNICODE" NA
#  $ COLLATION_CATALOG       : chr  NA NA NA
#  $ COLLATION_SCHEMA        : chr  NA NA NA
#  $ COLLATION_NAME          : chr  NA "SQL_Latin1_General_CP1_CI_AS" NA
#  $ DOMAIN_CATALOG          : chr  NA NA NA
#  $ DOMAIN_SCHEMA           : chr  NA NA NA
#  $ DOMAIN_NAME             : chr  NA NA NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...