Sybase 데이터베이스에서 테이블 설명 (필드 이름 및 유형)을 얻는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1429898

문제

명령 줄 ISQL에 액세스 할 수 있으며 주어진 데이터베이스의 모든 테이블, 아마도 형식화 된 파일로 메타 데이터를 얻고 싶습니다. 어떻게 달성 할 수 있습니까?

감사.

도움이 되었습니까?

해결책

확인하다 sysobjects 그리고 Syscolumns 테이블.

여기 Sybase 시스템 테이블의 다이어그램입니다.

모든 사용자 테이블의 목록 :

SELECT * FROM sysobjects WHERE type = 'U'

'U'를 다른 개체로 변경할 수 있습니다.

  • C - 계산 된 열
  • D - 기본값
  • F - SQLJ 함수
  • L - 로그
  • N - 파티션 조건
  • P-Transact-SQL 또는 SQLJ 절차
  • PR - 객체 준비 (동적 SQL에 의해 생성)
  • R - 규칙
  • RI - 참조 제약
  • S - 시스템 테이블
  • TR - 방아쇠
  • U - 사용자 테이블
  • V -보기
  • XP - 확장 저장 절차

테이블의 열 목록 :

SELECT sc.* 
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'

다른 팁

sp_help 당신이 찾고있는 것입니다.

Sybase 온라인 문서에서 SP_HELP 시스템 절차 :

설명

데이터베이스 개체 (SysObjects에 나열된 객체) 및 시스템 또는 사용자 정의 데이터 유형 및 계산 열 및 기능 기반 인덱스에 대한 정보를보고합니다. 열 표시 optomistic_index_lock.

통사론

sp_help [objname]

[...]

다음은 Publishers 테이블의 (부분적) 출력입니다 ( 데이터베이스 개체에서 SP_HELP 사용):

Name               Owner        Object_type     Create_date 
----------------   -----------  -------------   ------------------------------
publishers         dbo          user table      Nov 9 2004 9:57AM

(1 row affected)
Column_name Type     Length   Prec  Scale   Nulls   Default_name   Rule_name
----------- -------  ------   ----- ------- ------- -------------- ---------- 
pub_id      char          4    NULL  NULL        0  NULL           pub_idrule
pub_name    varchar      40    NULL  NULL        1  NULL           NULL
city        varchar      20    NULL  NULL        1  NULL           NULL
state       char          2    NULL  NULL        1  NULL           NULL
Access_Rule_name    Computed_Column_object     Identity
------------------- -------------------------  ------------
NULL                NULL                                  0
NULL                NULL                                  0
NULL                NULL                                  0
NULL                NULL                                  0

여전히 인용합니다 데이터베이스 개체에서 SP_HELP 사용:

객체 이름을 공급하지 않고 SP_HELP를 실행하는 경우 결과 보고서는 이름, 소유자 및 객체 유형과 함께 SYSOBJEcts의 각 객체를 표시합니다. 또한 Systypes의 각 사용자 정의 데이터 유형 및 이름, 스토리지 유형, 길이, NULL 값이 허용되는지 여부 및 기본값 또는 규칙이 표시됩니다. 이 보고서는 또한 기본 또는 외국 키 열이 표 또는보기에 대해 정의 된 경우에도 언급됩니다.

Sybase IQ :

describe table_name;
     SELECT
DB_NAME() TABLE_CATALOG,
NULL TABLE_SCHEMA,
so.name TABLE_NAME,
sc.name COLUMN_NAME,
sc.colid ORDINAL_POSITION,
NULL COLUMN_DEFAULT,
CASE WHEN st.allownulls=1 THEN 'YES'
 ELSE 'NO'
END IS_NULLABLE,
st.name DATA_TYPE,
CASE WHEN st.name like '%char%' THEN st.length
END CHARACTER_MAXIMUM_LENGTH,
CASE WHEN st.name like '%char%' THEN st.length
END*2 CHARACTER_OCTET_LENGTH,
CASE WHEN st.name in ('numeric','int') THEN st.length
END NUMERIC_MAXIMUM_LENGTH,
CASE WHEN st.name in ('numeric','int') THEN st.prec
END NUMERIC_PRECISION,
NULL NUMERIC_PRECISION_RADIX,
CASE WHEN st.name in ('numeric','int') THEN st.scale
END NUMERIC_SCALE,
CASE WHEN st.name in ('datetime') THEN st.prec
END DATETIME_PRECISION,
NULL CHARACTER_SET_CATALOG,
NULL CHARACTER_SET_SCHEMA,
NULL COLLATION_CATALOG,
NULL COLLATION_SCHEMA,
NULL DOMAIN_CATALOG,
NULL DOMAIN_SCHEMA,
NULL DOMAIN_NAME
FROM 
sysobjects so
INNER JOIN 
syscolumns sc
ON sc.id = so.id
inner join systypes st on st.usertype = sc.usertype 
WHERE so.name = 'TableName'

다음을 사용하여 데이터베이스의 모든 테이블에서 열을 검색 할 수 있습니다.

SELECT so.name 
FROM sysobjects so
INNER JOIN syscolumns sc ON so.id = sc.id 
WHERE sc.name = 'YOUR_COLUMN_NAME'

sp_tables ISQL에서도 작동합니다. 현재 데이터베이스의 테이블 목록을 제공합니다.

사용자 테이블을 찾을 때 테이블 소유자 이름도 원하는 경우 다음을 사용할 수 있습니다.

select su.name + '.' + so.name
from   sysobjects so,
       sysusers   su
where  so.type = 'U' and
       so.uid  = su.uid
order  by su.name,
          so.name

명령 줄 프로그램을 사용하려는 경우 SQL을 사용하는 것으로 제한되지 않으면 사용할 수 있습니다. Schemacrawler. Schemacrawler는 오픈 소스이며 일반 텍스트, CSV 또는 (x) HTML 형식으로 파일을 생성 할 수 있습니다.

여기서 메타 데이터를 얻기위한 다른 접근법이 있습니다. 이 매우 유용한 SQL 명령은 텍스트로 테이블 /보기 정의를 반환합니다.

id = object_id ( 'myschema.mytable') 주문별, colid2, colid의 순서가있는 syscomments에서 텍스트를 선택하십시오.

패트릭을 즐기십시오

내가 사용하는 Sybase 버전에서 다음은 선택된 테이블에 대한 열 목록을 제공합니다.

select *
FROM sys.syscolumns sc
where tname = 'YOUR_TABLE_NAME'
--and creator='YOUR_USER_NAME' --if you want to further restrict tables
--according to the user name that created it

Sybase ASE의 경우 SP_COLUMNS TABLE_NAME는 원하는 모든 테이블 메타 데이터를 반환합니다.

Sybase가 SQL-92를 준수하는 경우이 정보는 information_schema 테이블 내에 저장됩니다.

따라서 다음은 SQL-92 호환 데이터베이스의 테이블 및 뷰 목록을 제공합니다.

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top