2011-09-06 13 views
5

मैं इन्फोर्मिक्स डेटाबेस तालिका जानकारी और स्तंभ जानकारी जैसेSQL क्वेरी

  • तालिका नाम प्राप्त करना चाहते हैं का उपयोग कर इन्फोर्मिक्स तालिका और स्तंभ विवरण प्राप्त करें
  • तालिका के
  • स्तंभ नाम
  • डेटा स्तंभ
  • के प्रकार
  • डेटा प्रकार लंबाई (पूर्व: varchar यदि स्तंभ है)
  • स्तंभों की constrains

मैं स्तंभ नाम

SELECT TRIM(c.colname) AS table_dot_column 
FROM "informix".systables AS t, "informix".syscolumns AS c 
WHERE t.tabname = 'agent_status' 
AND t.tabtype = 'T' 
and t.tabid = c.tabid 
AND t.tabid >= 100 ; 

खोजने के लिए तालिका नाम और स्तंभ नाम इस क्वेरी का उपयोग कर तालिका नाम

select tabname from systables 

प्राप्त करने के लिए प्राप्त करने में सक्षम हूँ, लेकिन मैं डेटा प्रकार खोजने के लिए सक्षम नहीं हूँ और कॉलम की बाधाएं।

क्या कोई मुझे उपर्युक्त तालिका के कुल विवरण प्राप्त करने के लिए SQL क्वेरी बता सकता है?

उत्तर

3

वाह! यह एक जटिल सवाल है - कम से कम दो, शायद तीन प्रश्नों के रूप में सबसे अच्छा व्यवहार किया जाता है; या हो सकता है कि वही है जो आपको दिमाग में था।

आप पहली बार क्वेरी में tabid और owner चयन करने के लिए चाहते हो सकता है, और यह नहीं बल्कि सिर्फ systables से "informix".systables उपयोग करने के लिए अच्छा तरीका है (हालांकि यह है कि केवल सच में एक मोड एएनएसआई डेटाबेस में मायने रखती है, लेकिन फिर यह वास्तव में बात करता है)।

syscolumns पर क्वेरी ठीक है, हालांकि t.tabid >= 100 खंड शायद अनावश्यक है, जब तक कि आप निश्चित रूप से सिस्टम कैटलॉग टेबल में कॉलम के बारे में लोगों को सीखना नहीं चाहते हैं। साथ ही, दृश्य में कॉलम के बारे में जानना उपयोगी हो सकता है, इसलिए tabtype = 'T' बहुत कठोर हो सकता है।

डेटा प्रकारों को डीकोड करना ठीक है। अंतर्निहित प्रकारों के लिए, यह बहुत मुश्किल नहीं है; उपयोगकर्ता परिभाषित प्रकारों के लिए, यह काफी कठिन काम है। coltype और collength (और extended_d) आपको इस प्रकार के बारे में बताते हैं। sqltypes.ec में, आप SQLCMD पैकेज में मूल प्रकारों का अनुवाद करने के लिए सी कोड पा सकते हैं। आप $INFORMIXDIR/etc/xpg4_is.sql में कुछ सरल SQL (जो पूर्ण नहीं हो सकते हैं) पा सकते हैं।

बाधा जानकारी sysconstraints और संबंधित तालिकाओं में संग्रहीत की जाती है। आप पहले से उल्लिखित SQLCMD स्रोत में कुछ बाधाओं के लिए कोड पा सकते हैं (फ़ाइल sqlinfo.ec)।