من قاعدة بيانات Sybase، كيف يمكنني الحصول على وصف الجدول (أسماء الحقول وأنواعها)؟
-
07-07-2019 - |
سؤال
لدي إمكانية الوصول إلى سطر الأوامر 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