एक कैसेंड्रा कॉलम से डेटा को कॉपी करने का एक अच्छा तरीका एक ही की-स्पेस (SQL के INSERT INTO) की तरह है?


11

आसानी से एक कैसेंड्रा ColumnFamily / तालिका से सभी पंक्तियों को स्थानांतरित करने का एक तरीका खोजने की कोशिश कर रहा है।

COPYआदेश, के रूप में मैं समझता हूँ, एक अच्छा विकल्प है। हालाँकि, चूंकि यह सभी डेटा को .csvडिस्क पर डंप करता है और फिर इसे वापस लोड करता है, मैं मदद नहीं कर सकता, लेकिन आश्चर्य होता है कि क्या यह इंजन में करने का एक बेहतर तरीका है।

मैं क्या मतलब है का एक विशिष्ट उदाहरण INSERT * FROM my_table INTO my_other_tableकई SQLडेटाबेस में उपलब्ध होगा । बेशक, मुझे एहसास है कि कैसंड्रा NoSQL है और इसलिए उसी तरह से काम नहीं करता है - लेकिन यह कुछ ऐसा लगता है जो उपलब्ध हो सकता है।

इसे पूरा करने का एक अच्छा तरीका क्या है?

बहुत बहुत धन्यवाद!

जवाबों:


10
cqlsh -k mykeyspace -e 'COPY fromTable(columnNames) TO STDOUT' | head -n -1 | 
cqlsh -k mykeyspace -e 'COPY toTable(columnNames) FROM STDIN'

1
धन्यवाद, यह दिलचस्प लग रहा है। हालांकि, मैं चरित्र से बचने और अन्य मुद्दों के बारे में चिंतित हूं, खासकर जब कुछ प्रकार के डेटा से निपटना। क्या यह एक चिंता का विषय है?
जुआन कार्लोस कोटो

1
अच्छा विचार है, लेकिन @JuanCarlosCoto ने कहा, यह कुछ डेटा प्रकारों के साथ काम नहीं करता है। मैंने इसे एक टेबल पर एक बूँद कॉलम के साथ आज़माया और यह एक नए वर्ण पर दुर्घटनाग्रस्त हो गया।
अलेक्जेंड्रे डुब्रेइल

कैसंड्रा 2.1.2 पर मुझे कमांड को हेड करने के लिए संशोधित करना पड़ा -2 पर क्योंकि सीओपीवाई के ouput में अंत में दो लाइनें शामिल हैं जिन्हें ट्रिम करने की आवश्यकता है। यह अभी भी काम कर रहा था, लेकिन यह अंत में खाली लाइन के बारे में पागल हो गया।
ctlacko

नोट - केवल उन डेटासेट को आयात करने के लिए COPY FROM का उपयोग करें जिनकी 2 मिलियन से कम पंक्तियाँ हैं। बड़े डेटासेट आयात करने के लिए, कैसेंड्रा बल्क लोडर का उपयोग करें।
गणेशपुराण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.