পোস্টগিজ ডিবিতে বিদ্যমান টেবিলগুলি (নতুন স্কিমার প্রয়োগ) থেকে কীভাবে একটি টেবিল তৈরি করবেন?


9

আমার কাছে একটি টেবিল রয়েছে যা ভূ-বিভাগীয়ভাবে সক্ষম; যে বিশ্বের সীমানা ধারণ করে। আমি এটিকে বিভিন্ন স্কিমায় (গ্লোবাল, ইউরোপ ইত্যাদি) ভাঙতে চাই। আমার চিন্তাভাবনা এমন কিছু ব্যবহার করা উচিত যা দেখতে দেখতে:

CREATE TABLE europe.borders
  AS (SELECT *
         FROM wo_borders
         WHERE admin_lvl2='eu' ); //just an example!

নতুন স্কিমার অ্যাকাউন্ট নেওয়া এবং সেগুলি ভৌগলিকভাবে সক্ষম করে তোলা বিদ্যমান টেবিলগুলি থেকে একটি সারণী তৈরি করার সঠিক কি? আমার ডিফল্ট পোস্টগিস টেম্পলেট ব্যবহার করে কি আমাকে নতুন টেবিলগুলি তৈরি করতে হবে?

উত্তর:


21

সাধারণত আপনি এটির মতো একটি নতুন জিওপ্যাটিয়াল টেবিল তৈরি করতে পারেন:

SELECT *
INTO europe.borders
FROM wo_borders
WHERE admin_lvl2 = 'eu';

-- Define a primary key
ALTER TABLE europe.borders ADD PRIMARY KEY (gid);

-- Spatially enable it
SELECT Populate_Geometry_Columns('europe.borders'::regclass);

যাইহোক, এটি করে আপনি আপনার ডাটাবেসকে পৃথক করে দিচ্ছেন (এটি আন-সাধারণকরণ করুন)। এর অর্থ এটির অপ্রয়োজনীয়তা রয়েছে, সুতরাং যদি কোনও টেবিলে কোনও তথ্যের জন্য আপডেট থাকে তবে অন্যটিতে আপডেট করা শক্ত। তদুপরি, আপনি পুরো বিশ্বে, কেবলমাত্র শহরতলিতে কোয়েরি করতে পারবেন না। আপনি প্রধান টেবিলের পার্টিশনের ভার্চুয়াল টেবিলগুলি তৈরি করতে ভিউউ ব্যবহার করে বিবেচনা করতে পারেন:

-- Make an index on your column used to query the view
CREATE INDEX wo_borders_admin_lvl2_idx ON wo_borders USING btree (admin_lvl2);

-- Now the view
CREATE OR REPLACE VIEW europe.borders_view AS
 SELECT *
 FROM wo_borders
 WHERE admin_lvl2 = 'eu';

-- Spatially enable it
SELECT Populate_Geometry_Columns('europe.borders_view'::regclass);

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