একটি এসকিউএল সার্ভারের টেবিল থেকে অন্যটিতে কীভাবে একটি সারি অনুলিপি করবেন


94

আমার দুটি অভিন্ন টেবিল রয়েছে এবং টেবিল থেকে অন্যটিতে সারিগুলি অনুলিপি করা দরকার। এটি করার সর্বোত্তম উপায় কী? (আমাকে প্রোগ্রাম্যিকভাবে মাত্র কয়েকটি সারি অনুলিপি করতে হবে, আমার বাল্ক কপি ইউটিলিটি ব্যবহার করার দরকার নেই)।

উত্তর:


122

যতক্ষণ না কোনও পরিচয় কলাম রয়েছে ততক্ষণ আপনি পারেন

INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]

23
এই বাক্য গঠনটি সম্পর্কে সতর্কতা অবলম্বন করুন কারণ টেবিল 2 এর একটি পরিচয় কলাম থাকলে এটি কাজ করবে না এবং যদি ভবিষ্যতে টেবিল 1 সিঙ্কে পরিবর্তন না করে টেবিল 2 পরিবর্তিত হয় (আমাকে পূর্বে পুড়িয়ে ফেলেছে) তবে ভবিষ্যতে এটি ভেঙে যাবে। এই সমাধানটি আপনার ক্ষেত্রে উপযুক্ত হতে পারে, কেবল এই বিবেচনাগুলি সম্পর্কে সচেতন হন।
মাইকেল হরেন

11
আপনি যে টেবিলটি সন্নিবেশ করানোর চেষ্টা করছেন তাতে অস্থায়ীভাবে পরিচয় কলামটি অক্ষম করতে আপনি SET IDENTITY_INSERT < table > ON(এবং SET IDENTITY_INSERT < table > OFF) ব্যবহার করতে পারেন । আমার ডেটাসেটের মাঝখানে কয়েকটি হারিয়ে যাওয়া রেকর্ড পুনরুদ্ধার করার চেষ্টা করেছিলাম ked
নিক

4
টেবিল 1 এর প্রাথমিক কীটি বিদেশী কী হিসাবে টেবিল 2 এ উপস্থিত থাকলে কী হবে? আমার একই জিনিস রয়েছে এবং আমি কী করব জানি না .. টেবিল 2 আইডিতে বিদেশী-কী হিসাবে "প্রযুক্তি_আইডটেকনোলজি" এবং টেবিল 1 এ এটি "আইডিটেকনোলজি" হিসাবে আছে আমি টেবিল 1 থেকে সমস্ত এন্ট্রি অনুলিপি করতে চাই টেবিল 2, যখন আইডি টেকনোলজির দুটি টেবিলের সাথে মেলে ..
জেলেলবি

72

বিকল্প বাক্য গঠন:

INSERT tbl (Col1, Col2, ..., ColN)
  SELECT Col1, Col2, ..., ColN
  FROM Tbl2
  WHERE ...

নির্বাচিত ক্যোয়ারিতে (অবশ্যই) এক্সপ্রেশন, কেস স্টেটমেন্ট, কনস্ট্যান্ট / লিটারাল ইত্যাদি অন্তর্ভুক্ত থাকতে পারে


4
টেবিলগুলি কিছুটা পৃথক হলে এটি দুর্দান্ত। আমার দ্বিতীয় সারণীতে আমি কয়েকটি অতিরিক্ত কলাম করেছি এবং স্বীকৃত উত্তর এমএসএসকিউএলটির সাথে অভিন্ন হওয়ার প্রয়োজন হিসাবে কাজ করে না।
টনি এম

40

জ্যারেটের উত্তরটি একটি নতুন টেবিল তৈরি করে।

স্কটের উত্তর একই কাঠামো সহ একটি বিদ্যমান টেবিলের মধ্যে সন্নিবেশ করায়।

আপনি বিভিন্ন কাঠামো সহ একটি টেবিলের মধ্যেও সন্নিবেশ করতে পারেন:

INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]

6
@ স্কটস্টোনহাউস: আপনি যদি এই উত্তরটি উত্তর হিসাবে অন্য সমস্ত উত্তরগুলি সংগ্রহ করেন তবে কোড সহ (এটি ব্যাপকভাবে তৈরি করেছেন), আপনি অবশ্যই সেরা উত্তর হয়ে উঠবেন।
মাইকেল হরেন

6
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ... 

এসকিউএল সার্ভারে কাজ করে


4
এটি কেবল তখনই কাজ করে যখন ডেস্টেবলের অস্তিত্ব থাকে না। এই কোয়েরির আগে ডেস্টেবল তৈরি করা হলে আপনি একটি ত্রুটি পাবেন।
একটি ওয়েব-বিকাশকারী

4
আসলে এটি ব্যর্থ হয় যদি গন্তব্য সারণির অস্তিত্ব না থাকে। বিদ্যমান ডিস্টেটেবল খালি না থাকলে এটি ত্রুটি ঘটাতে পারে।
কানিউউ

5
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >

4
এটি করার কোনও উপায় আছে কি না যদি এই দুটি টেবিলটি এসকিএল-সার্ভারে পৃথক ডাটাবেসে থাকে।
নরেশ

9
অবশ্যই! সম্পূর্ণ ডাটাবেস যোগ্যতা অর্জন করুন। [সার্ভারনেম]। [স্কিমা]। [টেবিল]। উদাহরণস্বরূপSELECT * INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]
জারেট মেয়ার

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