এসকিউএল সার্ভার - একটি ডাটাবেস টেবিলের একটি অনুলিপি তৈরি করুন এবং এটি একই ডাটাবেসে রাখুন?


108

আমার একটি ডাটাবেস ডিবিতে একটি টেবিল এবিসি আছে। আমি একই ডিবিতে ABC_1, ABC_2, ABC_3 নামের সাথে এবিসির অনুলিপি তৈরি করতে চাই। ম্যানেজমেন্ট স্টুডিও (সর্বাধিক) বা এসকিউএল কোয়েরি ব্যবহার করে আমি কীভাবে এটি করতে পারি?

এটি এসকিউএল সার্ভার 2008 আর 2 এর জন্য।


1
অন্য কোনও পোস্ট সরাসরি সম্পর্কিত নয়, তবে উপরের ব্যবহারের সাথে সম্পর্কিত হতে পারে - stackoverflow.com/questions/6810425/… আপনি টেবিলের অনুলিপি সম্পাদনা করতে চাইলে এটি কার্যকর হতে পারে (যেমন নালকে অনুমতি দিন, ডেটা টাইপ পরিবর্তন করুন ইত্যাদি) ।) কপিগুলি পুনরায় তৈরি না করে
সিক্যুয়েল.লাইনার

উত্তর:


212

ব্যবহার SELECT ... INTO:

SELECT *
INTO ABC_1
FROM ABC;

এটি একটি নতুন টেবিল তৈরি করবে ABC_1যার একই কলাম কাঠামো ABCআছে এবং একই ডেটা রয়েছে। সীমাবদ্ধতা (যেমন কী, ডিফল্ট মান) তবে নকল-অনুলিপি করা হয়।

আপনি এই কোয়েরিটি প্রতিবার একটি আলাদা টেবিলের নাম সহ একাধিকবার চালাতে পারেন।


আপনার যদি ডেটা অনুলিপি করার প্রয়োজন না হয়, কেবল একই কলাম কাঠামো সহ একটি নতুন খালি টেবিল তৈরি করতে, WHEREএকটি মিথ্যা এক্সপ্রেশন সহ একটি ধারা যুক্ত করুন :

SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;

3
আমার সমস্যার সঠিক উত্তর।
সিক্যুয়েল.লাইনার

8
সম্পূর্ণরূপে কাজ করে না .... মূলতে গণনা করা কলামগুলি লক্ষ্য হিসাবে একই হিসাবে অনুলিপি করা হয় না। এছাড়াও, পিকে এবং ডিফল্ট সীমাবদ্ধতাগুলিও অনুলিপি করা হয়নি
সাইমন গ্রিন

@ সিমনগ্রিন - আপনি আপনার কোড সহ এই সমস্যার জন্য একটি নতুন প্রশ্ন পোস্ট করতে পারেন।
মাহমুদ গামাল

3
অবশ্যই এটি পুরোপুরি কাজ করে না। তিনি সতর্ক করে দিয়েছিলেন যে প্রতিবন্ধকতাগুলি অনুলিপি করা হবে না, বা প্রাথমিক কীগুলি বা ডিফল্ট মানগুলি করবে না। তিনি যে কমান্ডটি অফার করেছেন সেটি একই কলাম স্ট্রাকচার (যেমনটি তিনি বলেছেন) দিয়ে একটি নতুন টেবিল তৈরি করে এবং আপনার জন্য নতুন টেবিলের মধ্যে সমস্ত ডেটা সন্নিবেশ করে।
ব্যবহারকারী5855178

1
আমি SELECT TOP(0) *সর্বদা-মিথ্যা WHEREবিবৃতি পদ্ধতির চেয়ে ক্লিনার ব্যবহার করতে পারি
থাইমাইন

21

এসএসএমএস ইউআইয়ের মাধ্যমে স্কিমা (জেনারেট ডিডিএল) অনুলিপি করুন

SSMS ইন আপনার ডাটাবেস প্রসারিত বস্তু এক্সপ্লোরার , এখানে যান টেবিল , টেবিল আপনি আগ্রহী এবং নির্বাচন করছি ডানে ক্লিক করে স্ক্রিপ্ট টেবিল হিসাবে , তৈরি করুন , নতুন কোয়েরি সম্পাদক উইন্ডো । একটি খুঁজে না এবং প্রতিস্থাপন ( জন্য CTRL + + এইচ করা) সারণী নাম পরিবর্তন করতে (অর্থাত ABCমধ্যে আপনি কি ক্ষেত্র ও ABC_1মধ্যে দিয়ে প্রতিস্থাপন ক্লিক করুন ঠিক আছে )।

স্কিমাকে টি-এসকিউএল এর মাধ্যমে অনুলিপি করুন

এসকিউএল দ্বারা এটি কীভাবে করা যায় তা দেখানো অন্যান্য উত্তরগুলিও ভাল কাজ করে তবে এই পদ্ধতির সাথে পার্থক্য হ'ল আপনি কোনও সূচক, সীমাবদ্ধতা এবং ট্রিগারও পাবেন।

তথ্য অনুলিপি করুন

আপনি যদি ডেটা অন্তর্ভুক্ত করতে চান তবে এই টেবিলটি তৈরি করার পরে এবিসি থেকে সমস্ত ডেটা অনুলিপি করতে নীচের স্ক্রিপ্টটি চালান (যদি আপনার পরিচয় ক্ষেত্র থাকে তবে একই আইডি মান রেখে):

set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off

1
আপনি কি নিশ্চিত যে এই পদ্ধতিটি সূচকগুলিও অনুলিপি করেছে? আমি চেষ্টা করেছিলাম কিন্তু তা হয়নি।
21

3
আপনি সেট করতে হবে IDENTITY_INSERTকরতে চালু পারমিট পরিচয় কলাম সেট করতে "ম্যানুয়ালি", আপনি আপনার উদাহরণে অর্ডার মিশিয়ে। এছাড়াও, আপনি অবশ্যই স্পষ্ট তালিকাটিতে আপনার কলাম
জাঁ

2
ধন্যবাদ @ জিয়ান; ভালভাবে স্পট 6 বছর অবহেলিত পরে! সংশোধন করা হয়েছে।
LBevan

এটি আমার জন্য সমস্যাটি প্রায় সমাধান করেছে। শেষ কৌশলটি হ'ল আপনি কলামগুলির তালিকা পেতে এসএসএমএসে গাছের "কলামগুলি" ফোল্ডারটিকে সম্পাদক এ টেনে আনতে পারেন। আমার প্রতিটি টেবিলে একটি টাইমস্ট্যাম্প কলাম রয়েছে, তাই আমাকে কলামগুলির তালিকা পেতে হবে এবং তারপরে টাইমস্ট্যাম্পটি সরিয়ে ফেলতে হয়েছিল।
ওয়েড হ্যাটলার

10

আপনি যদি টেবিলটির সমস্ত সীমাবদ্ধতা ও কীগুলির সাথে সদৃশ করতে চান তবে নীচের পদক্ষেপগুলি অনুসরণ করে:

  1. এসকিউএল ম্যানেজমেন্ট স্টুডিওতে ডাটাবেস খুলুন।
  2. আপনি যে টেবিলটি নকল করতে চান তাতে ডান ক্লিক করুন।
  3. স্ক্রিপ্ট সারণি হিসাবে নির্বাচন করুন -> তৈরি করুন -> নতুন ক্যোয়ারী সম্পাদক উইন্ডো। এটি নতুন ক্যোয়ারী উইন্ডোতে টেবিলটি পুনরায় তৈরি করতে একটি স্ক্রিপ্ট তৈরি করবে।
  4. স্ক্রিপ্টের টেবিলের নাম এবং আপেক্ষিক কী এবং সীমাবদ্ধতাগুলি পরিবর্তন করুন।
  5. স্ক্রিপ্টটি কার্যকর করুন।

তারপরে ডেটা অনুলিপি করার জন্য এটি নীচে স্ক্রিপ্টটি চালান:

SET IDENTITY_INSERT DuplicateTable ON

INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... ) 
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable

SET IDENTITY_INSERT DuplicateTable OFF

4

1 ম বিকল্প

select *
  into ABC_1
  from ABC;

২ য় বিকল্প: এসএসআইএস ব্যবহার করুন, এটি অবজেক্ট এক্সপ্লোরার> সমস্ত কার্য> এক্সপোর্ট ডেটাতে ডাটাবেসে ডান ক্লিক করুন

  • উত্স এবং লক্ষ্য: আপনার ডিবি
  • উত্স সারণী: এবিসি
  • লক্ষ্য সারণি: ABC_1 (সারণী তৈরি করা হবে)

2

এটি অন্য একটি বিকল্প:

select top 0 * into <new_table> from <original_table>

2
এই অনুরোধটি ডেটা ছাড়াই টেবিল অনুলিপি করে। ব্যবহারকারীদের এগুলি টেবিলগুলি অনুলিপি করতে মোটেই বলা হয়েছিল।
আলেকজান্ডার

1

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও বা নেটক্যাট ব্যবহার করুন এবং এটি স্কিএল পরিচালনা করা আরও সহজ হবে


1

সারণী এবং এর ডেটা, সীমাবদ্ধতা এবং ট্রিগারগুলি অনুলিপি করতে আপনাকে এসআইএসআইএস লিখতে হবে। আমাদের প্রতিষ্ঠানে কলরম সিস্টেমগুলি দ্বারা কাল অ্যাডমিন নামে একটি সফ্টওয়্যার রয়েছে যা ডাউনলোড করার জন্য একটি বিনামূল্যে সংস্করণ রয়েছে (আমি মনে করি যে অনুলিপি টেবিলের বৈশিষ্ট্যটি optionচ্ছিক)

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