32

コマンドラインisqlにアクセスでき、特定のデータベースのすべてのテーブルのメタデータを、場合によってはフォーマットされたファイルで取得したいと思います。どうすればそれを達成できますか?

ありがとう。

4

12 に答える 12

69

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'
于 2009-09-15T22:17:18.993 に答える
50

sp_helpあなたが探しているものです。

sp_helpシステムプロシージャに関するSybaseオンラインドキュメントから:

説明

データベースオブジェクト(sysobjectsにリストされている任意のオブジェクト)、システムまたはユーザー定義のデータ型、および計算列と関数ベースのインデックスに関する情報を報告します。列にoptimistic_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値が許可されているかどうか、およびそれにバインドされているデフォルトまたはルールも示されています。レポートには、テーブルまたはビューに主キー列または外部キー列が定義されているかどうかも示されます。

于 2009-09-15T22:19:14.267 に答える
7

Sybase IQ:

describe table_name;
于 2014-12-17T16:37:42.423 に答える
5
     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'
于 2015-02-21T00:36:43.277 に答える
2

以下を使用して、データベース内のすべてのテーブルの列を検索できます。

SELECT so.name 
FROM sysobjects so
INNER JOIN syscolumns sc ON so.id = sc.id 
WHERE sc.name = 'YOUR_COLUMN_NAME'
于 2011-02-22T10:10:33.620 に答える
2

ユーザーテーブルを検索するときに、テーブルの所有者名も必要な場合は、次を使用できます。

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
于 2013-09-27T18:23:24.440 に答える
1

sp_tablesisqlでも動作します。現在のデータベース内のテーブルのリストが表示されます。

于 2010-03-18T18:35:21.017 に答える
0

コマンドラインプログラムを使用したいが、SQLの使用に制限されていない場合は、SchemaCrawlerを使用できます。SchemaCrawlerはオープンソースであり、プレーンテキスト、CSV、または(X)HTML形式のファイルを作成できます。

于 2009-09-27T02:25:21.863 に答える
0

ここでは、メタデータを取得するための別のアプローチを示します。この非常に便利なSQLコマンドは、テーブル/ビュー定義をテキストとして返します。

SELECT text FROM syscomments WHERE id = OBJECT_ID('MySchema.MyTable')ORDER BY number、colid2、colid

パトリックをお楽しみください

于 2013-10-25T19:10:17.663 に答える
0

私が使用している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
于 2017-10-03T16:00:04.660 に答える
0

Sybase ASEの場合、sp_columns table_nameは、探しているすべてのテーブルメタデータを返します。

于 2019-05-13T12:33:17.347 に答える
-2

SybaseがSQL-92に準拠している場合、この情報はINFORMATION_SCHEMAテーブルに格納されます。

したがって、以下は、SQL-92準拠のデータベース内のテーブルとビューのリストを示します。

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
于 2009-09-15T22:18:55.980 に答える