আমার কাছে foo নামক একটি ডাটাবেস এবং বার নামক একটি ডাটাবেস রয়েছে। আমার কাছে fb- তে একটি টেবিল রয়েছে যার নাম tblFoobar যা আমি ডাটাবেস foo থেকে ডাটাবেস বারে (ডেটা এবং সমস্ত) সরাতে চাই। এটি করার জন্য এসকিউএল স্টেটমেন্টটি কী?
আমার কাছে foo নামক একটি ডাটাবেস এবং বার নামক একটি ডাটাবেস রয়েছে। আমার কাছে fb- তে একটি টেবিল রয়েছে যার নাম tblFoobar যা আমি ডাটাবেস foo থেকে ডাটাবেস বারে (ডেটা এবং সমস্ত) সরাতে চাই। এটি করার জন্য এসকিউএল স্টেটমেন্টটি কী?
উত্তর:
এসকিউএল সার্ভারে? এবং একই ডাটাবেস সার্ভারে? তিনটি অংশের নামকরণ ব্যবহার করুন।
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
এটি কেবল ডেটা সরায়। আপনি যদি সারণির সংজ্ঞাটি (এবং অন্যান্য বৈশিষ্ট্য যেমন অনুমতি এবং সূচকগুলি) সরিয়ে নিতে চান তবে আপনাকে অন্য কিছু করতে হবে।
এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর "আমদানি ডেটা" টাস্ক (ডিবি নামের উপর ডান ক্লিক করুন, তারপরে কার্যগুলি) আপনার জন্য বেশিরভাগ কাজ করবে। আপনি যে ডেটাবেসে অনুলিপি করতে চান তা থেকে এটি চালান।
যদি টেবিলগুলি বিদ্যমান না থাকে তবে এটি আপনার জন্য এগুলি তৈরি করবে, তবে আপনাকে সম্ভবত কোনও সূচি এবং এগুলি পুনরায় তৈরি করতে হবে। যদি টেবিলগুলি বিদ্যমান থাকে তবে এটি ডিফল্টরূপে নতুন ডেটা সংযোজন করবে তবে আপনি এটি (ম্যাপিংস সম্পাদনা করুন) সামঞ্জস্য করতে পারেন তাই এটি সমস্ত বিদ্যমান ডেটা মুছে ফেলবে।
আমি এটি সব সময় ব্যবহার করি এবং এটি মোটামুটি ভালভাবে কাজ করে।
WHERE
আমদানি ডেটা টাস্কটি ব্যবহার করে কোনও শর্ত নির্দিষ্ট করা সম্ভব ? আমি এটি করার উপায় খুঁজে পাইনি।
এই কাজ করা উচিত:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
এটি কনস্ট্যান্টস, ডিফল্ট বা সূচকগুলি অনুলিপি করবে না । তৈরি করা টেবিলটিতে একটি ক্লাস্টার্ড সূচক থাকবে না ।
বিকল্পভাবে আপনি করতে পারেন:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
যদি আপনার গন্তব্য সারণী বিদ্যমান এবং খালি থাকে।
INSERT INTO...
) ওরাকলে আমার জন্য কাজ করেছিল।
যদি এটি কেবল একটি টেবিল হয় তবে আপনার যা করা দরকার তা হ'ল
একটি বিষয় আপনাকে বিবেচনা করতে হবে অন্যান্য আপডেটগুলি যেমন ভবিষ্যতে অন্যান্য বস্তু স্থানান্তরিত। মনে রাখবেন যে আপনার উত্স এবং গন্তব্য সারণিতে একই নাম নেই। এর অর্থ হ'ল যদি আপনি নির্ভরশীল অবজেক্টস যেমন দেখা, সঞ্চিত পদ্ধতি এবং অন্যান্যতেও আপনাকে পরিবর্তন করতে হবে।
এক বা একাধিক অবজেক্টের জন্য আপনি যেকোন ইস্যুতে ম্যানুয়ালি যেতে পারেন। তবে, যখন মাত্র কয়েকটি আপডেটের বেশি থাকে তৃতীয় পক্ষের তুলনা সরঞ্জামগুলি খুব কাজে আসে। এই মুহূর্তে আমি স্কিমা মাইগ্রেশনগুলির জন্য অ্যাপেক্সএসকিউএল ডিফ ব্যবহার করছি তবে আপনি অন্য কোনও সরঞ্জাম দিয়ে ভুল করতে পারবেন না।
স্ক্রিপ্ট create table
ব্যবস্থাপনা স্টুডিওতে, যে স্ক্রিপ্ট বারে সারণি তৈরি করতে চালানো। (অবজেক্ট এক্সপ্লোরারে টেবিলের রাইট ক্লিক করুন, স্ক্রিপ্ট টেবিল হিসাবে তৈরি করুন ...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
SET IDENTITY_INSERT TblName ON
।
আপনি এসকিউএল স্ক্রিপ্ট তৈরি করতে গাইড করতে সহায়তা করতে এসকিউএল সার্ভার স্ক্রিপ্টস উইজার্ডটিও ব্যবহার করতে পারেন যা নিম্নলিখিতগুলি করতে পারে:
এখানে প্রদর্শিত স্ক্রিন শট সহ এসকিউএল সার্ভার ২০০৮ এর জন্য ভাল উদাহরণ কর্মপ্রবাহ ।
আপনি এই পথে যেতে পারেন: (একটি সাধারণ উদাহরণ)
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>
উভয় ডিবি একই সার্ভারে থাকলে সার্ভারের নামটি চ্ছিক।
তথ্য অনুলিপি করুন
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details