Sybase 데이터베이스에서 테이블 설명 (필드 이름 및 유형)을 얻는 방법은 무엇입니까?
-
07-07-2019 - |
문제
명령 줄 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