سؤال
أرغب في إنشاء جدول من مجموعة البيانات التي تم إنشاؤها بواسطة وظيفة "جدول المساعدة" الخاصة بـ Teradata حتى أتمكن من إضافة مزيد من المعلومات حول الجدول ، وأن أكون قادرًا على تصفية الصفوف حسب الظروف. يحتوي الجدول على أكثر من 400 عمود ، لذلك سيكون هذا مناسبًا جدًا للإدارة. أرغب في أن أكون قادرًا على القيام بشيء مشابه لإنشاء جدول كـ SELECT ، لكنه لا يعمل مع بناء جملة جدول المساعدة. أقل من تصدير البيانات إلى Excel ، ثم إنشاء مخطط الجدول يدويًا واستيراد الجدول مرة أخرى ، هل يعرف أي شخص كيفية تحويل إخراج جدول المساعدة إلى جدول في Teradata؟
المحلول
يأتي الإخراج من أمر جدول المساعدة من قاموس البيانات.
إذا فهمت بشكل صحيح ، فأنت تريد إنشاء جدول جديد مع الإخراج التالي.
help table t1; *** Help information returned. 4 rows. *** Total elapsed time was 1 second. Column Name Type Comment ------------------------------ ---- -------- a1 I ? b1 CF ? c1 D ? d1 DA ?
يمكنك الحصول على كل هذه الأعمدة الثلاثة (أو أكثر) من الجدول dbc.tvfields.
help table dbc.tvfields; help table dbc.tvfields; *** Help information returned. 37 rows. *** Total elapsed time was 1 second. Column Name Type Comment ------------------------------ ---- ---------------- TableId BF ? FieldName CV ? FieldId I2 ? Nullable CF ? FieldType CF ? MaxLength I ? DefaultValue CV ? DefaultValueI BV ? TotalDigits I2 ? ImpliedPoint I2 ? FieldFormat CV ? FieldTitle CV ? CommentString CV ? CollationFlag CF ? UpperCaseFlag CF ? DatabaseId BF ? Compressible CF ? CompressValueList CV ? FieldStatistics BV ? ColumnCheck CV ? CheckCount I2 ? CreateUID BF ? CreateTimeStamp TS ? LastAlterUID BF ? LastAlterTimeStamp TS ? LastAccessTimeStamp TS ? AccessCount I ? SPParameterType CF ? CharType I2 ? LobSequenceNo I2 ? IdColType CF ? UDTypeId BF ? UDTName CV ? TimeDimension CF ? VTCheckType CF ? TTCheckType CF ? ConstraintId BF ?
لكن أولاً نحتاج إلى معرفة قاعدة البيانات و TableID.
select databaseid from dbc.dbase where databasename='db1'; *** Query completed. One row found. One column returned. *** Total elapsed time was 1 second. DatabaseId ---------- 00000F04
select TVMId from dbc.tables2 where databaseid='00000F04'xb and TVMName='t1'; *** Query completed. One row found. One column returned. *** Total elapsed time was 1 second. TVMId ------------ 0000D8070000
يمكنك الآن سرد جميع الأعمدة التي تحتاجها وتخزينها في المقابل.
select * from dbc.tvfields where databaseid='00000F04'xb and tableid='0000D8070000'xb;