বনাম নির্বাচন হিসাবে টেবিল তৈরি করুন


16

PostgreSQL সমর্থন করে CREATE TABLE ASএবং SELECT INTOআমি কখনই উভয় ব্যবহার করব?

CREATE TABLE AS - কোনও প্রশ্নের ফলাফল থেকে একটি নতুন সারণি সংজ্ঞায়িত করুন

CREATE TABLE ASএকটি সারণী তৈরি করে এবং এটি একটি SELECTকমান্ড দ্বারা গণিত ডেটা পূরণ করে । সারণী কলামগুলির নাম এবং ডেটা প্রকারের আউটপুট কলামগুলির সাথে সম্পর্কিত রয়েছে SELECT(এটি ব্যতীত আপনি নতুন কলামের নামগুলির একটি সুস্পষ্ট তালিকা প্রদান করে কলামের নামগুলি ওভাররাইড করতে পারেন)।

CREATE TABLE ASএকটি ভিউ তৈরির সাথে কিছুটা সাদৃশ্য রয়েছে তবে এটি সত্যিই আলাদা different এটি একটি নতুন টেবিল তৈরি করে এবং প্রাথমিকভাবে নতুন টেবিলটি পূরণ করার জন্য ক্যোয়ারিকে একবার মূল্যায়ন করে। নতুন টেবিলটি কোয়েরির উত্স সারণীতে পরবর্তী পরিবর্তনগুলি ট্র্যাক করবে না। বিপরীতে, একটি ভিউ SELECTযখনই জিজ্ঞাসা করা হয় তখন তার সংজ্ঞায়িত বিবৃতিটির পুনরায় মূল্যায়ন করে ।

এবং তারপর.

SELECT INTO - কোনও প্রশ্নের ফলাফল থেকে একটি নতুন সারণি সংজ্ঞায়িত করুন

SELECT INTOএকটি নতুন টেবিল তৈরি করে এবং এটি একটি ক্যোয়ারী দ্বারা গণিত ডেটা পূরণ করে। ক্লায়েন্টের কাছে ডেটা ফিরিয়ে দেওয়া হয় না, কারণ এটি একটি সাধারণ SELECT। নতুন টেবিলের কলামগুলিতে আউটপুট কলামগুলির সাথে যুক্ত নাম এবং ডেটা প্রকার রয়েছে SELECT

উত্তর:


15

ব্যাখ্যা ছাড়াই, সর্বদা CREATE TABLE ASব্যতিক্রম ছাড়া ব্যবহার করুন । নোটগুলির নীচে প্রতিটিটির নীচে এটি পরিষ্কার হয়ে যায়,

জন্য নোটস SELECT INTO,

CREATE TABLE ASকার্যত অনুরূপ SELECT INTOCREATE TABLE ASপ্রস্তাবিত বাক্য গঠন, যেহেতু এই ফর্মটি SELECT INTOইসিপিজি বা পিএল / পিজিএসকিউএল এ উপলব্ধ নয়, কারণ তারা আইএনটিও ধারাটি আলাদাভাবে ব্যাখ্যা করে। তদ্ব্যতীত, CREATE TABLE ASদ্বারা উপলব্ধ কার্যকারিতা সুপারসেটও উপলব্ধ করা হয় SELECT INTO

জন্য নোটস CREATE TABLE AS,

এই আদেশটি কার্যকরীভাবে অনুরূপ SELECT INTO, তবে এটি সিনট্যাক্সের অন্যান্য ব্যবহারের সাথে বিভ্রান্ত হওয়ার সম্ভাবনা কম হওয়ায়SELECT INTO এটি পছন্দ করা হয় তদ্ব্যতীত, CREATE TABLE ASদ্বারা প্রদত্ত কার্যকারিতা সুপারসেটও উপলব্ধ করা হয় SELECT INTO

এছাড়াও এর ডক্সের সামঞ্জস্যতা বিভাগে SELECT INTOআরও এগিয়ে যায়,

এসকিউএল স্ট্যান্ডার্ডটি SELECT INTOএকটি নতুন টেবিল তৈরির পরিবর্তে হোস্ট প্রোগ্রামের স্কেলার ভেরিয়েবলগুলিতে মান নির্বাচন করে প্রতিনিধিত্ব করতে ব্যবহার করে। এটি হ'ল ইসিপিজিতে (অধ্যায় 34 দেখুন) এবং পিএল / পিজিএসকিউএল (অধ্যায় 41 দেখুন) এর ব্যবহারগুলি পাওয়া যায়। সারণী তৈরিতে প্রতিনিধিত্ব করার জন্য পোস্টগ্রিজ এসকিউএল ব্যবহার .তিহাসিক SELECT INTOCREATE TABLE ASনতুন কোডে এই উদ্দেশ্যে ব্যবহার করা ভাল ।

তাহলে আমাদের আছে,

  1. পোস্টগ্রেএসকিউএল মনে করে এটি বিভ্রান্তিকর কারণ SELECT INTOঅন্যান্য বিষয়গুলি কেবল পিএল / পিজিএসকিউএল এবং ইসিপিজিতে উপলব্ধ।
  2. CREATE TABLEআরও কার্যকারিতা সমর্থন করে (আমি ধরে নিচ্ছি তারা উল্লেখ করছে WITH OIDSএবং TABLESPACE, IF NOT EXISTS)।
  3. SELECT INTO সারণী তৈরির জন্য "অবচয়" রয়েছে।

পার্শ্ব নোট হিসাবে, সিটিই সহ সিটিএএসের সিনট্যাক্সটি কিছুটা অদ্ভুত দেখাচ্ছে look , এবং কোয়েলগুলির উপর এক ধরণের হোল্ডও SELECT INTO থাকতে পারে । কোয়েল এসকিউএল এর পূর্বসূরী ছিল, যে পোস্টগ্র্রেএসকিউএল (INGRES) এর পূর্বসূরীর ব্যবহার করত।RETRIEVE INTO


1

আমি অন্য একটি জিনিস লক্ষ্য করেছি যা গৃহীত উত্তর থেকে অনুপস্থিত। ব্যবহার করে CREATE TABLE ASপ্রতিটি কলামের নলযোগ্য বৈশিষ্ট্য সংরক্ষণ করা হয় যা এড়িয়ে যাওয়া বলে মনে হয় SELECT INTO

একা এই ভিত্তিতে শুধু আমি সুপারিশ চাই CREATE TABLE AS। উভয় বিবৃতিগুলির একটি সাধারণ ব্যবহারের ক্ষেত্রে হ'ল দীর্ঘ সময় ধরে চলমান ক্যোয়ারী থেকে ডেটা আপনার সন্ধানের সময়কালের জন্য সেই টেবিলটি লক না করে কোনও টেবিলের মধ্যে লোড করা। আপনি উপরের কমান্ডগুলির মধ্যে একটি ব্যবহার করে একটি অস্থায়ী টেবিল তৈরি করেন, দীর্ঘতর চলমান ক্যোয়ারির ফলাফলগুলি সেখানে রাখুন এবং তারপরে ফলাফলগুলি মূল সারণিতে সন্নিবেশ করুন। আপনার টেম্প টেবিলের মধ্যে অযোগ্য বৈশিষ্ট্য সংরক্ষণ করা আপনার দ্বিতীয় সন্নিবেশ ব্যর্থ হওয়ার সম্ভাবনা হ্রাস করে।

এটি পিজি 11-তে পরীক্ষা করা হয়েছে, সুতরাং সম্ভবত এই প্রশ্নের উত্তর দেওয়া হওয়ার পরে এটি একটি নতুন বৈশিষ্ট্য।


একটি দীর্ঘ চলমান ক্যোয়ারী কোনও টেবিল লক করে না। সুতরাং প্রেরণা জন্য CTAS ব্যবহার করতে যে কারণে বৃথা
a_horse_with_no_name
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.