من قاعدة بيانات Sybase، كيف يمكنني الحصول على وصف الجدول (أسماء الحقول وأنواعها)؟

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

سؤال

لدي إمكانية الوصول إلى سطر الأوامر isql وأحب الحصول على البيانات الوصفية لجميع جداول قاعدة بيانات معينة، ربما في ملف منسق.كيف يمكنني تحقيق ذلك؟

شكرًا.

هل كانت مفيدة؟

المحلول

يفحص sysobjects و أعمدة النظام الجداول.

هنا هو رسم تخطيطي لجداول نظام Sybase.

قائمة بجميع جداول المستخدم:

SELECT * FROM sysobjects WHERE type = 'U'

يمكنك تغيير "U" إلى كائنات أخرى:

  • ج – العمود المحسوب
  • د – الافتراضي
  • F - وظيفة SQLJ
  • لام - سجل
  • ن – حالة التقسيم
  • P - إجراء Transact-SQL أو SQLJ
  • العلاقات العامة – تحضير الكائنات (التي تم إنشاؤها بواسطة Dynamic SQL)
  • ص – القاعدة
  • RI - القيد المرجعي
  • S - جدول النظام
  • TR - الزناد
  • ش - جدول المستخدم
  • الخامس – عرض
  • 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 إجراءات النظام:

وصف

تقارير معلومات حول كائن قاعدة البيانات (أي كائن مدرج في كائنات النظام) وحول النظام أو أنواع البيانات المعرفة من قبل المستخدم، بالإضافة إلى الأعمدة المحسوبة والفهارس المستندة إلى الوظائف.يعرض العمود متفائل_index_lock.

بناء الجملة

sp_help [objname]

[...]

فيما يلي الإخراج (الجزئي) لجدول الناشرين (تم لصقه من استخدام 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 دون توفير اسم كائن، فسيعرض التقرير الناتج كل كائن في كائنات النظام، بالإضافة إلى اسمه ومالكه ونوع الكائن.يظهر أيضًا كل نوع بيانات محدد من قبل المستخدم في أنواع النظام واسمه ونوع تخزينه وطوله وما إذا كان مسموحًا بالقيم الخالية وأي إعدادات افتراضية أو قواعد مرتبطة به.ويشير التقرير أيضًا إلى ما إذا تم تحديد أي أعمدة مفاتيح أساسية أو خارجية لجدول أو طريقة عرض.

وسايبيس 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 مفيدة جدا ينقلك / تعريف طريقة عرض جدول كنص:

والنص اختر من syscomments WHERE ID = OBJECT_ID ( 'MySchema.MyTable') ORDER BY العدد، colid2، colid

واستمتع باتريك

في النسخة سايبيس يمكنني استخدام وقائمة الأعمدة يعطي يلي لالجدول المحدد

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

لسايبيس، sp_columns سوف TABLE_NAME عودة جميع البيانات الجدول الذي تبحث عنه.

إذا سايبيس وSQL-92 متوافق ثم يتم تخزين هذه المعلومات في جداول INFORMATION_SCHEMA.

وهكذا ما يلي سوف أعطيك قائمة من الجداول وطرق العرض في أي-92 SQL قاعدة بيانات متوافقة مع

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top