2013-08-07 13 views
17

में तालिका का नाम बदलने के लिए मैं CQLSH के माध्यम से बनाई गई तालिका का नाम बदलने का प्रयास कर रहा हूं। ईजी। तालिका "एएए" का नाम "बीबीबी" करें। ऐसा करने के लिए कोई आदेश नहीं मिल रहा है। कोई विचार?कैसंड्रा CQL3

का उपयोग [cqlsh 3.1.6 | कैसंद्रा 1.2.8 | सीक्यूएल स्पेक 3.0.0 | थ्रिफ्ट प्रोटोकॉल 19.36.0]

उत्तर

23

मुझे विश्वास नहीं है कि आप टेबल या कीज स्पेस का नाम बदल सकते हैं, ऐसा करने के लिए कोई सीक्यूएल 3 ऑपरेशन नहीं है, और पुराने थिर्फ़्ट इंटरफेस में कुछ भी नहीं है, अगर मुझे सही याद है।

एक कारण यह नहीं है कि आप यह नहीं कर सकते कि कैसंद्रा के वितरित प्रकृति के कारण यह करना बहुत कठिन बात होगी, परिवर्तन परमाणु रूप से नहीं किया जा सकता है ताकि क्लस्टर एक असंगत स्थिति में हो और अधिकांश संभावित अपडेट खो जाएंगे। यह तालिकाओं को बनाने और छोड़ने जैसा ही है, लेकिन उन मामलों में यह अपेक्षा की जाती है कि यदि तालिका बनाई जाती है या इसे छोड़ने के बाद जारी किया जाता है तो अपडेट खो जाएंगे।

एकमात्र तरीका जो मैं जानता हूं कि आप जो करना चाहते हैं वह नई तालिका बनाना और पुराने डेटा से नए डेटा को स्थानांतरित करना है, फिर पुरानी तालिका को छोड़ दें। डेटा को स्थानांतरित किए बिना इसे करने का कोई तरीका हो सकता है, लेकिन शायद आपको क्लस्टर को रोकने और तालिका से संबंधित सभी निर्देशिकाओं और फ़ाइलों का नाम बदलने की आवश्यकता होगी, और system.schema_columnfamilies तालिका में मेटाडेटा भी बदलें (लेकिन मैं ' मुझे यकीन नहीं है कि आप यह भी कर सकते हैं)।

+0

vkroz: क्या आपने उपर्युक्त समाधान की कोशिश की? – Ztyx

+1

एक टेबल को दूसरे में कॉपी करने का तरीका कैसा है? –

+0

मुझे पता है कि यह पकड़ है, लेकिन अगर अगला व्यक्ति उस पर ठोकर खाता है ... एक टेबल से दूसरे डेटा में डेटा डालने का सबसे अच्छा तरीका डेटा निर्यात करना है और फिर इसे अगली तालिका में आयात करना है। यदि आप एक टेबल का नाम बदल रहे हैं, तो आप निर्यात करेंगे, नई तालिका बनाएं, फिर डेटा आयात करें। आप निर्यात के बाद किसी भी समय पुरानी तालिका को हटा सकते हैं। https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html – ammills01