ফলাফলের জন্য অপেক্ষা না করে কীভাবে পিএসকিএল থেকে একটি কোয়েরি কার্যকর করবেন?


9

আমার ক্যোয়ারী (বিদ্যমান সারণী থেকে একটি নতুন টেবিল তৈরি করতে) খুব দীর্ঘ সময় লাগে। তাই আমি আমার অফিসে একটি রিমোট ডাটাবেস স্থাপন করেছি - সেখানে আরও বেশি র্যাম।

আমি পিএসএলএল এর সাথে যথারীতি বাড়ি থেকে আমার ডাটাবেসের সাথে সংযোগ করতে পারি।

কোনও প্রতিক্রিয়া অপেক্ষা না করে আমি কীভাবে দূরবর্তী সার্ভারকে টার্মিনাল থেকে আমার জিজ্ঞাসা চালিয়ে যেতে বলতে পারি?

(postgresql-9.2, লিনাক্স পরিবেশ)

সম্পাদনা: আমি অন্যান্য সমাধানের জন্য উন্মুক্ত, পিএসকিএল ব্যবহার করার প্রয়োজন নেই

উত্তর:


6

যেহেতু আপনি বলেছেন যে আপনি অন্যান্য সমাধানের জন্য উন্মুক্ত, আমি সম্ভবত স্ক্রিন বা টিএমউক্সের মতো টার্মিনাল মাল্টিপ্লেক্সারের দিকে নজর দেওয়ার পরামর্শ দেব । আমার মতে tmux এর অনন্য নামের (অনুসন্ধান ইঞ্জিনগুলিতে প্রাসঙ্গিক হিট পেতে সহজ) কারণে একটি ভাল পছন্দ।

মূলত এই ধরণের সফ্টওয়্যার আপনাকে শেল থেকে আলাদা করতে এবং পরে সেশনটি পুনরায় শুরু করতে দেয়।


1
নেই tmuxএই ভাবে কাজ: 'আমি শাটডাউন আমার স্থানীয় মেশিন সক্ষম হবে, এবং কোয়েরি এখনো দূরবর্তী সার্ভারে এ প্রক্রিয়াকরণ না করা অবধি পান'?
dezso

হ্যাঁ, সেশনটি রিমোট মেশিনে চলছে - বিদ্যুৎ বিভ্রাট হওয়া বা ইন্টারনেট সংযোগ হ্রাস হ'ল একটি সমস্যা (দূরবর্তী সেশন সম্পর্কিত :)) to মনে রাখবেন যে আপনাকে প্রক্রিয়াটি টার্মিনাল মাল্টিপ্লেজার (আফাইক) থেকে শুরু করতে হবে।
c0dem4gnetic

এটি কীভাবে কার্যকর করা হয় তার গাইডেন্স দিতে পারেন? psqlক্লায়েন্ট সফ্টওয়্যার না না, আপনার স্থানীয় মেশিনে চলমান তারপর tmuxকরছে sshএকটি দূরবর্তী একটি postgres সার্ভার চলমান মেশিনে সংযোগ নেই? যদি এমনটি হয় তবে আমি দুঃখের সাথে বুঝতে পেরেছি যে এটি ইসি 2 চালানো ছাড়াই রেডশিফ্ট উদাহরণের সাথে কাজ করবে না।
মেরিলিন

@ মেরলিন tmux রিমোট মেশিনে চলে এবং শেল সেশনটি স্থাপন করে। এটি থেকে আপনি আলাদা এবং সংযুক্ত হন। স্থানীয়ভাবে পিএসকিএল চালানোর সময় আপনি এটি টিএমউक्स সেশনে চালাতে পারতেন, তবে ক্লায়েন্ট সংযোগটি কেবলমাত্র নেটওয়ার্ক শর্তের অনুমতি অনুসারে রাখা হয় - ঠিক যেমন একটি সাধারণ এসএস সেশনের মতো।
c0dem4gnetic

@ c0dem4gnetic আমার মনে হয় দূরবর্তী সার্ভারে এখনও পিএসএইচএল ইনস্টল করা উচিত। স্থানীয় tmux -> EC2 + tmux + পিএসকিএল সেশনটি বাঁচিয়ে রাখতে redshift / postgres db এ লগইন করার মতো মনে হচ্ছে।
মার্লিন

8

আপনি psqlব্যাকগ্রাউন্ডে প্রেরণ চেষ্টা করতে পারেন :

psql -f your_sql_file.sql &

অথবা, স্থানীয় ডিবিতে সংযোগ স্থাপন করে, আপনি dblinkদূরবর্তী ডিবিতে কোনও জিজ্ঞাসা প্রেরণের জন্য ব্যবহার করতে পারেন :

SELECT dblink_connect('your_connection_name', 'your_connection_string');
SELECT dblink_send_query('your_connection_name', 'your_query');

নোট যে dblink_send_queryএকবারে শুধুমাত্র একটি ক্যোয়ারী প্রেরণ করতে পারেন। সুতরাং, আপনি যদি একাধিক এসকিউএল স্টেটমেন্ট চালাতে চান তবে এটি আপনার সমাধান নয়।

অথবা, আপনি pg_agentরিমোট সার্ভারে একটি কাজ শুরু করতে পারেন , যার কোনও ম্যানুয়াল হস্তক্ষেপের প্রয়োজন নেই, সুতরাং আপনার হোম বাক্সের রাজ্যটি আপনার কাজ চালানোর ক্ষেত্রে কোনও প্রভাব ফেলবে না। আপনার স্ক্রিপ্টটি কার্যকর করে একটি cron(বা আরও ভাল at- ধন্যবাদ, এরউইন) কাজ সেট করেও এটি অর্জন করা যায় ।

অতিরিক্তভাবে, আপনার যদি একটি দীর্ঘ চলমান কাজ থাকে যা আপনি ম্যানুয়ালি শুরু করেন, আপনি screenসার্ভারে একটি সেশন শুরু করতে পারেন এবং সেখান থেকে ফাইলটি চালাতে পারেন। এই ক্ষেত্রে, আপনি লগ অফ করে বাড়িতে যেতে পারেন এবং স্ক্রিপ্টটি চলতে থাকবে।


pg_agent যথেষ্ট প্রতিশ্রুতিবদ্ধ দেখাচ্ছে। আমি এটি চেষ্টা করব এবং ফলাফল আপডেট করব।
ব্যবহারকারী528025

3
অথবা, এককালীন ক্রিয়াকলাপের জন্য, atআদেশটি আপনাকে ক্রোনের চেয়ে ভাল পরিবেশন করতে পারে।
এরউইন ব্র্যান্ডসটেটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.