Frage

Ich habe Zugang zu Befehlszeile isql und Ich mag Meta-Daten aller Tabellen einer bestimmten Datenbank erhalten, möglicherweise in einer formatierten Datei. Wie kann ich das erreichen?

Danke.

War es hilfreich?

Lösung

Überprüfen Sie sysobjects und syscolumns Tabellen.

Hier ist ein Diagramm von Sybase-Systemtabellen.

Eine Liste aller Benutzertabellen:

SELECT * FROM sysobjects WHERE type = 'U'

Sie können 'U' ändern, um andere Aufgaben:

  • C - berechnete Spalte
  • D - default
  • F - SQLJ Funktion
  • L - log
  • N - Partition Zustand
  • P - Transact-SQL oder SQLJ Prozedur
  • PR - vorbereiten Objekte (erstellt von Dynamic SQL)
  • R - Regel
  • RI - Verweisbeschränkung
  • S - Systemtabelle
  • TR - Trigger
  • U - Benutzertabelle
  • V - Ansicht
  • XP - erweiterte gespeicherte Prozedur

Liste der Spalten in einer Tabelle:

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

Andere Tipps

sp_help ist das, was Sie suchen.

Von Sybase-Online-Dokumentation auf dem sp_help Systemprozedur:

  

Beschreibung:

     

Gibt Informationen über ein Datenbankobjekt (jedes Objekt in sysobjects aufgeführt) und über System- oder benutzerdefinierte Datentypen sowie berechnete Spalten und funktionsbasierte Indizes. Spalte zeigt optimistic_index_lock .

     

Syntax

     

sp_help [objname]

     

[...]

Hier ist die (teilweise) Ausgabe für die Tabelle publishers (eingefügt von Mit sp_help auf Datenbankobjekte ):

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

Still zitiert Mit sp_help auf Datenbankobjekte :

  

Wenn Sie sp_help ausführen, ohne einen Objektnamen liefert, der daraus resultierende Bericht zeigt jedes Objekt in sysobjects, zusammen mit seinem Namen, Eigentümer und Objekttyp. Ebenfalls gezeigt ist jeder benutzerdefinierten Datentyps in systypes und seinen Namen, Speichertyp, Länge, ob Nullwerte erlaubt sind, und die Erfüllung der Regeln oder an sie gebunden. Der Bericht stellt auch fest, ob irgendwelche Primär- oder Fremdschlüssel-Spalten haben für eine Tabelle oder Sicht definiert.

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'

Sie können für Spalte in allen Tabellen in der Datenbank suchen mit:

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

sp_tables wird auch in isql arbeiten. Es gibt Ihnen die Liste der Tabellen in der aktuellen Datenbank.

Wenn Tabelle Benutzer zu finden, für den Fall, wenn der Tabelleneigentümer Name auch wollen, können Sie wie folgt vor:

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

Wenn Sie ein Kommandozeilen-Programm verwenden möchten, sind aber mit SQL nicht beschränkt, können Sie SchemaCrawler . SchemaCrawler ist Open Source und kann Dateien im Klartext, CSV produzieren, oder (X) HTML-Format.

Hier einen anderen Ansatz Meta-Daten zu erhalten. Dieser sehr hilfreich SQL-Befehl gibt Ihnen die Tabelle / View-Definition als Text:

SELECT Text aus syscomments WHERE ID = OBJECT_ID ( 'MySchema.MyTable') ORDER BY-Nummer, colid2, colid

Genießen Patrick

In der Sybase-Version ich verwende, die folgenden werden Liste der Spalten für ausgewählte Tabelle

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

Für Sybase ASE, sp_columns table_name werden alle Metadaten der Tabelle zurückkehren Sie suchen.

Wenn Sybase SQL-92-konform dann diese Informationen innerhalb der INFORMATION_SCHEMA-Tabellen gespeichert.

So folgendes wird Sie eine Liste von Tabellen und Ansichten in jeder SQL-92-kompatible Datenbank

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top