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


324

আমার কাছে foo নামক একটি ডাটাবেস এবং বার নামক একটি ডাটাবেস রয়েছে। আমার কাছে fb- তে একটি টেবিল রয়েছে যার নাম tblFoobar যা আমি ডাটাবেস foo থেকে ডাটাবেস বারে (ডেটা এবং সমস্ত) সরাতে চাই। এটি করার জন্য এসকিউএল স্টেটমেন্টটি কী?

উত্তর:


208

এসকিউএল সার্ভারে? এবং একই ডাটাবেস সার্ভারে? তিনটি অংশের নামকরণ ব্যবহার করুন।

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar

এটি কেবল ডেটা সরায়। আপনি যদি সারণির সংজ্ঞাটি (এবং অন্যান্য বৈশিষ্ট্য যেমন অনুমতি এবং সূচকগুলি) সরিয়ে নিতে চান তবে আপনাকে অন্য কিছু করতে হবে।


আমি বিশ্বাস করি যে আপনাকে আলাদাভাবে টেবিলের অনুমতিও সেট করতে হবে।
কেন রায়

1
আপনার যদি পরিচয় সন্নিবেশগুলিও খুব দরকার হয়, তবে ডেটা ইমপোর্ট উইজার্ডের সেই বিকল্পটির জন্য একটি বিকল্প রয়েছে - অন্য উত্তরটি উল্লেখ করে
ক্লারেন্স লিউ

13
@ টাহারহেনসিদ্দিকী: কারণ এটি প্রশ্নের উত্তর দেয়;) তিনি কীভাবে এটি ডাটাবেস সার্ভারের মধ্যে অনুলিপি করবেন তা জিজ্ঞাসা করেননি। তবে বেশিরভাগ লোকেরা এই উত্তরটির সন্ধান করে এখানেই শেষ হয়, কারণ গুগল প্রথম ফলাফল হিসাবে এটি দেয় :)
মার্টেন কিফট

1
@ রায়ানবি হ্যাঁ, এটি অনুমোদিত।
অ্যামি বি

1
@ টম ওপি এবং এই প্রশ্নে আসা অনেক লোক একটি সরঞ্জাম নয়, একটি "এসকিউএল বিবৃতি" খুঁজছেন।
অ্যামি বি

535

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর "আমদানি ডেটা" টাস্ক (ডিবি নামের উপর ডান ক্লিক করুন, তারপরে কার্যগুলি) আপনার জন্য বেশিরভাগ কাজ করবে। আপনি যে ডেটাবেসে অনুলিপি করতে চান তা থেকে এটি চালান।

যদি টেবিলগুলি বিদ্যমান না থাকে তবে এটি আপনার জন্য এগুলি তৈরি করবে, তবে আপনাকে সম্ভবত কোনও সূচি এবং এগুলি পুনরায় তৈরি করতে হবে। যদি টেবিলগুলি বিদ্যমান থাকে তবে এটি ডিফল্টরূপে নতুন ডেটা সংযোজন করবে তবে আপনি এটি (ম্যাপিংস সম্পাদনা করুন) সামঞ্জস্য করতে পারেন তাই এটি সমস্ত বিদ্যমান ডেটা মুছে ফেলবে।

আমি এটি সব সময় ব্যবহার করি এবং এটি মোটামুটি ভালভাবে কাজ করে।


1
আমি এই বিকল্পটি খুঁজে পেতে পারে না। এখানে নির্দিষ্ট কিছু সংস্করণ আছে?
নার্ভ

35
আপনি সত্যিই বলতে পারবেন না এটি সাধারণত একটি ভাল উত্তর। উদাহরণস্বরূপ কোনও স্ক্রিপ্টের মধ্যে থেকে অটোমেশন কল করা এটি অকার্যকর। বিটিডব্লিউ লেখক বিশেষত একটি "..এসকিউএল বিবৃতি .." চেয়েছিলেন। তবে অবশ্যই এটি একটি দুর্দান্ত উত্তর, তবে এর চেয়ে ভাল উত্তর নয়))।
গ্রিজলি

3
লেখক "(ডেটা এবং সমস্ত)" সরাতে বলেছেন; সুতরাং আমি আশা করি যে উত্তরটি এটি করেছে। এটি সারণী তৈরি করে তবে কোনও কী বা সূচি তৈরি করে না; এসকিউএল উত্তরের তুলনায় খুব একটা উন্নতি হবে না।
আনুবার

WHEREআমদানি ডেটা টাস্কটি ব্যবহার করে কোনও শর্ত নির্দিষ্ট করা সম্ভব ? আমি এটি করার উপায় খুঁজে পাইনি।
ক্রাশ

1
হ্যাঁ এখানেও উল্লিখিত হিসাবে এটি সঠিক পদ্ধতি , তবে identityএবং foreign keyউল্লেখগুলি গন্তব্য ডাটাবেসে সরানো হয়, কোনও সমাধান?
শাইজুত

106

এই কাজ করা উচিত:

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

এটি কনস্ট্যান্টস, ডিফল্ট বা সূচকগুলি অনুলিপি করবে না । তৈরি করা টেবিলটিতে একটি ক্লাস্টার্ড সূচক থাকবে না

বিকল্পভাবে আপনি করতে পারেন:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

যদি আপনার গন্তব্য সারণী বিদ্যমান এবং খালি থাকে।


যদি আপনি প্রথমে বেস টেবিল কাঠামো (ক্ষেত্র এবং ডেটা) অনুলিপি করেন এবং তারপরে অনুমতি, সূচি, সীমাবদ্ধতা এবং বর্ধিত বৈশিষ্ট্য তৈরি করতে কোনও প্যাচ স্ক্রিপ্ট প্রয়োগ করেন তবে কোনও সমস্যা আছে কি ?
leoinfo

4
এটি এসকিউএল সার্ভার ২০০৮-এ পরিচয় কলামগুলির জন্য মান সন্নিবেশ করবে না That's এটি কেবল তখনই অনুমোদিত হয় যখন আপনি কোনও কলাম তালিকা ব্যবহার করেন এবং গন্তব্য সারণির জন্য IDENTITY_INSERT চালু থাকে।
লুকাস উইলসন-রিখটার

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

দ্বিতীয় সংস্করণ ( INSERT INTO...) ওরাকলে আমার জন্য কাজ করেছিল।
vapcguy

যদি 2 টি ডাটাবেস বিভিন্ন সংযোগের স্ট্রিং সহ সম্পূর্ণ ভিন্ন সার্ভারে থাকে তবে এটি কাজ করে? তা না হলে আপনি কীভাবে তা পরিচালনা করবেন?
আলেকজান্ডার রায়ান ব্যাগেট

46

যদি এটি কেবল একটি টেবিল হয় তবে আপনার যা করা দরকার তা হ'ল

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

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

এক বা একাধিক অবজেক্টের জন্য আপনি যেকোন ইস্যুতে ম্যানুয়ালি যেতে পারেন। তবে, যখন মাত্র কয়েকটি আপডেটের বেশি থাকে তৃতীয় পক্ষের তুলনা সরঞ্জামগুলি খুব কাজে আসে। এই মুহূর্তে আমি স্কিমা মাইগ্রেশনগুলির জন্য অ্যাপেক্সএসকিউএল ডিফ ব্যবহার করছি তবে আপনি অন্য কোনও সরঞ্জাম দিয়ে ভুল করতে পারবেন না।


23
  1. স্ক্রিপ্ট create tableব্যবস্থাপনা স্টুডিওতে, যে স্ক্রিপ্ট বারে সারণি তৈরি করতে চালানো। (অবজেক্ট এক্সপ্লোরারে টেবিলের রাইট ক্লিক করুন, স্ক্রিপ্ট টেবিল হিসাবে তৈরি করুন ...)

  2. INSERT bar.[schema].table SELECT * FROM foo.[schema].table


1
আমি এই পদ্ধতির পছন্দ। পরিচয় কলাম থাকলেও * কাজ করবে না নির্বাচন করুন, আপনাকে কলামের নামগুলি স্পষ্টভাবে তালিকাভুক্ত করতে হবে। সেক্ষেত্রে আপনাকেও করতে হবে SET IDENTITY_INSERT TblName ON
জেরেমিওয়ের

16

আপনি এসকিউএল স্ক্রিপ্ট তৈরি করতে গাইড করতে সহায়তা করতে এসকিউএল সার্ভার স্ক্রিপ্টস উইজার্ডটিও ব্যবহার করতে পারেন যা নিম্নলিখিতগুলি করতে পারে:

  • টেবিল স্কিমা অনুলিপি করুন
  • কোনও সীমাবদ্ধতা (পরিচয়, ডিফল্ট মান ইত্যাদি)
  • টেবিলের মধ্যে তথ্য
  • এবং প্রয়োজনে আরও অনেক অপশন

এখানে প্রদর্শিত স্ক্রিন শট সহ এসকিউএল সার্ভার ২০০৮ এর জন্য ভাল উদাহরণ কর্মপ্রবাহ ।


উপরের আমার মন্তব্যগুলি দেখুন: "এটি কীভাবে 508/171 ভোট পেয়েছিল এবং রায়ানের" অক্টোবর 11 '11 এ 23:41 এ "উত্তর কেবলমাত্র ১৩ তারিখ পেয়েছে?!? রায়ান এর শুধুমাত্র উত্তর । যে উত্তর অপ এর Q 'র সম্পূর্ণরূপেকারণ এটা এই পরিস্থিতিগুলি পরিচালনা করে (যা, বিটিডব্লিউ, ওপি তার প্রশ্ন থেকে বাদ দেয় নি): ক) পরিচয় ( খুব সাধারণ), খ) সীমাবদ্ধতা, গ) সূচি, ই) অনুমতি, ঘ) স্কিমা এবং ডেটা অনুলিপি করে ( ইঙ্গিত: "এবং সমস্ত" অপের অংশ "(ডেটা এবং সমস্ত)" স্কিমাকেও বোঝায়) এবং ই) "এসকিউএল স্টেটমেন্ট" এর উত্পন্ন করে যা অপটি নির্দিষ্ট করে যা তার অর্থ না থাকলেও এটি আক্ষরিক অর্থে থাকা ভাল better না চেয়ে "।
টম

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

9

আপনি এই পথে যেতে পারেন: (একটি সাধারণ উদাহরণ)

insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers

সারণি সারণি রাখতে আপনার যদি কলামের নামও তৈরি করতে হয় তবে ব্যবহার করুন:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName')

আপনার টেবিল কলামের নামগুলি উপস্থাপন করতে ফলাফলটি অনুলিপি করুন এবং ক্যোয়ারী উইন্ডোতে পেস্ট করুন এবং এটি পরিচয় কলামও বাদ দেবে:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName') and is_identity = 0

মনে রাখবেন সারিগুলি অনুলিপি করতে স্ক্রিপ্টটি কাজ করবে যদি ডাটাবেসগুলি একই অবস্থানের অন্তর্ভুক্ত।


আপনি এটি চেষ্টা করতে পারেন।

select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>

উভয় ডিবি একই সার্ভারে থাকলে সার্ভারের নামটি চ্ছিক।


1

যদি বিদ্যমান সারণী থাকে এবং আমরা কেবল ডেটা অনুলিপি করতে চাই, আমরা এই কোয়েরিটি চেষ্টা করতে পারি।

গন্তব্য_এক্সিস্টিং_বিবিএতে প্রবেশ করান col1, কল 2 FROM Source_Tbl নির্বাচন করুন


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