এই টেবিলগুলিতে সারণী, সংজ্ঞা এবং ডেটা যুক্ত একটি মাইএসকিউএল ডাম্প থেকে আমার কাছে একটি এসকিএল ফাইল রয়েছে। আমি কীভাবে ডাম্প ফাইলে উপস্থাপিত এই ডাটাবেসটিকে এমএস এসকিউএল সার্ভার ডাটাবেসে রূপান্তর করতে পারি?
এই টেবিলগুলিতে সারণী, সংজ্ঞা এবং ডেটা যুক্ত একটি মাইএসকিউএল ডাম্প থেকে আমার কাছে একটি এসকিএল ফাইল রয়েছে। আমি কীভাবে ডাম্প ফাইলে উপস্থাপিত এই ডাটাবেসটিকে এমএস এসকিউএল সার্ভার ডাটাবেসে রূপান্তর করতে পারি?
উত্তর:
ব্যবহারের SQL সার্ভার মাইগ্রেশন সহকারী (SSMA)
মাইএসকিউএল ছাড়াও এটি ওরাকল, সিবাস এবং এমএস অ্যাক্সেস সমর্থন করে।
এটি বেশ স্মার্ট এবং এমনকি অযৌক্তিক স্থানান্তরকে পরিচালনা করতে সক্ষম বলে মনে হচ্ছে। এটি কিছু কমান্ড লাইন ইন্টারফেসও পেয়েছে (জিইউআই ছাড়াও) তাই তাত্ত্বিকভাবে এটি কিছু ব্যাচের লোড প্রক্রিয়াতে সংহত করা যায়।
এটি মাইএসকিউএল সংস্করণ https://www.microsoft.com/en-us/download/details.aspx?id=54257 এর জন্য বর্তমান ডাউনলোড লিঙ্ক
ডেটা স্থানান্তর করার সময় বর্তমান (জুন 2016) স্থিতিশীল সংস্করণ 6.0.1 বর্তমান (5.3.6) মাইএসকিউএল ওডিবিসি ড্রাইভারের সাথে ক্র্যাশ হয়েছে। সবকিছু 64 বিট। 5.1.13 ওডিবিসি ড্রাইভার সহ 5.3 সংস্করণটি দুর্দান্ত কাজ করে।
আমি আপনাকে মাইএসকিএলডাম্প এর মতো ব্যবহার করার পরামর্শ দিচ্ছি :
mysqldump --compatible=mssql
phpMyAdmin এখনও একটি ওয়েব-অ্যাপ্লিকেশন এবং সম্ভবত এর জন্য কিছু সীমাবদ্ধতা থাকতে পারে বড় ডেটাবেসগুলির (স্ক্রিপ্ট এক্সিকিউশন সময়, বরাদ্দযোগ্য মেমরি এবং আরও কিছু)।
আমি নেট এ জন্য একটি উপায় খুঁজে পেয়েছি
এটি কিছুটা কাজের দাবি করে, কারণ এটি টেবিলের মাধ্যমে টেবিলটি করতে হবে। তবে যাইহোক, আমি একটি এমএস এসকিউএল ডাটাবেসে টেবিলগুলি, ডেটা এবং সীমাবদ্ধতার অনুলিপি করতে পারি।
লিঙ্কটি এখানে
http://www.codeproject.com/KB/datedia/migrate-mysql-to-mssql.aspx
আপনি যদি পিএইচপিএমইএডমিনের সাথে রফতানি করেন তবে আপনি এসকিউএল সামঞ্জস্যতা মোডকে 'এমএসএসকিউএল' এ স্যুইচ করতে পারেন। এইভাবে আপনি আপনার এমএস এসকিউএল ডাটাবেসের বিপরীতে রফতানি স্ক্রিপ্টটি চালান এবং আপনার কাজ শেষ।
আপনি যদি পিএইচপিএমইএডমিন ব্যবহার করতে না চান বা না চান তবে মাইএসকিলডাম্পে একটি সামঞ্জস্যের বিকল্পও রয়েছে , তবে ব্যক্তিগতভাবে আমার চেয়ে পিএইচপিএমএইডমিনটি আমার পক্ষে এটি করানো উচিত।
এমএস এসকিউএল .sql ফাইলগুলি আমদানি করার জন্য আমার পদ্ধতিটি এখানে রয়েছে:
মাইএসকিউএল থেকে সারণী রফতানি করুন --compatible=mssql
এবং --extended-insert=FALSE
বিকল্পগুলি:
mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
পাওয়ারশেলের সাথে রফতানি হওয়া ফাইলটি প্রতি ফাইল প্রতি 300000 লাইন দ্বারা বিভক্ত করুন:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে প্রতিটি ফাইল চালান
সন্নিবেশগুলিকে কীভাবে দ্রুত করা যায় তার কয়েকটি টিপস রয়েছে ।
অন্যান্য পদ্ধতির মধ্যে মাইএসকিএলডাম –where
বিকল্পটি ব্যবহার করা । এই বিকল্পটি ব্যবহার করে আপনি যে কোনও শর্তে আপনার টেবিলটি বিভক্ত করতে পারেন যা where
স্কয়ার ক্লজ দ্বারা সমর্থিত ।
--databases [db_name]
কীওয়ার্ডটি চেষ্টা করুন যেমন এটি এই উত্তরে ব্যাখ্যা করেছে: stackoverflow.com/a/26096339/155687
আমার আজ একটি খুব অনুরূপ সমস্যা ছিল - আমার মাইএসকিউএল থেকে একটি বড় টেবিল (৫ মিলিয়ন সারি) এমএস এসকিউএলে অনুলিপি করা দরকার।
আমি যে পদক্ষেপগুলি করেছি (উবুন্টু লিনাক্সের অধীনে):
এমএস এসকিউএলে একটি টেবিল তৈরি করেছে যা মাইএসকিএলে উত্স সারণীর সাথে কাঠামোর সাথে মেলে।
এমএস এসকিউএল কমান্ড লাইন ইনস্টল করা হয়েছে: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu
মাইএসকিউএল থেকে একটি ফাইলে ডাবড টেবিল:
mysqldump - কমপ্যাক্ট - অসম্পূর্ণ সন্নিবেশ \ - না-তৈরি তথ্য \ --comp موافق = এমএসকিউএল - এক্সটেন্ডেড-সন্নিবেশ = মিথ্যা \ --হোস্ট "$ MYSQL_HOST" \ - ব্যবহারকারীর "$ MYSQL_USER" \ -p "$ MYSQL_PASS" \ "$ MYSQL_DB" \ "$ টেবিল"> "ILE ফাইল"
আমার ক্ষেত্রে ডাম্প ফাইলটি বেশ বড় ছিল, তাই আমি এটিকে কয়েকটি ছোট ছোট টুকরো (প্রতিটি 1000 টি লাইন) এ বিভক্ত করার সিদ্ধান্ত নিয়েছি - split --lines=1000 "$FILENAME" part-
অবশেষে আমি এই ছোট ফাইলগুলিতে পুনরাবৃত্তি করেছি, কিছু পাঠ্য প্রতিস্থাপন করেছি এবং এমএস এসকিউএল সার্ভারের বিপরীতে টুকরোগুলি একের পর এক চালিত করেছি:
এসকিউএলসিএমডি = / অপ্ট / এমএসকিউএল-সরঞ্জামগুলি / বিন / এসকিএলসিএমডি রফতানি করুন x = 0 অংশে ফাইলের জন্য - * কর প্রতিধ্বনি "এমএস এসকিউএলে ফাইল [$ ফাইল] রফতানি করা হচ্ছে $ x হাজার (গুলি) প্রসেস করা হয়েছে" # \ 'এর সাথে' 'প্রতিস্থাপন করে সেড -i "এস / \\\ '/' '/ জি" "$ ফাইল" # সমস্ত সরান " sed -i 's / "// g'" $ ফাইল " # নির্দিষ্ট পিকে (আইডি) সহ রেকর্ড সন্নিবেশ করতে দেয় সেড -i "1s / ^ / সেট পরিচয়পত্রের সারণি AB টেবিল চালু; \ n /" "$ ফাইল" "$ এসকিউএলসিএমডি" -এস "Z আজিউর_সেবার" -ড "Z আউজুরি_ডিবি" -ইউ "Z আউজুরি_উসার" -পি "$জুরিপাস" -আই "$ ফাইল" প্রতিধ্বনি "" প্রতিধ্বনি "" x = $ ((x + 1)) সম্পন্ন প্রতিধ্বনি "সম্পন্ন"
অবশ্যই আপনার মত আমার ভেরিয়েবল প্রতিস্থাপন করতে হবে $AZURE_SERVER
, $TABLE
পুলিশের সঙ্গে, ইত্যাদি।
আশা করি এইটি কাজ করবে.
আমার পক্ষে এটি এই কমান্ডের সাথে সমস্ত ডেটা রফতানি করতে সর্বোত্তম কাজ করেছে:
mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql
--extended-insert = mssql 1000 সারি আমদানির সীমা এড়াতে FALSE প্রয়োজন।
আমি আমার মাইগ্রেশন সরঞ্জামটি দিয়ে আমার টেবিলগুলি তৈরি করেছি, তাই ব্যাকআপ.এসকিউএল ফাইল থেকে ক্রেইট কাজ করবে কিনা তা আমি নিশ্চিত নই।
এমএসএসকিউএল এর এসএসএমএসে আমাকে আইডি ক্ষেত্রগুলি লেখার জন্য আইডেন্টিটিপ নম্বর দিয়ে টেবিলে ডেটা টেবিলটি আমদানি করতে হয়েছিল:
SET IDENTITY_INSERT dbo.app_warehouse ON;
GO
INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,'');
SET IDENTITY_INSERT dbo.app_warehouse OFF;
GO
আপনার যদি সম্পর্ক থাকে তবে আপনাকে প্রথমে বাচ্চাটি বিদেশী কী সহ টেবিলের চেয়ে আমদানি করতে হবে।
এছাড়াও আপনি 'ওডিবিসি' + 'এসকিউএল সার্ভার ইম্পোর্ট এবং এক্সপোর্ট উইজার্ড' ব্যবহার করতে পারেন। নীচের লিঙ্কটিতে এটি বর্ণনা করা হয়েছে: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/
চালান:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
আপনি কি একটি প্রক্রিয়া বার দেখতে চান?
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
আপনি মাইএসকিউএল থেকে স্কেলসার্ভারে রূপান্তর করার জন্য স্ক্লি অ্যাপ্লিকেশন ব্যবহার করতে পারেন আপনি এই ভিডিওটি দেখতে পারেন https://www.youtube.com/watch?v=iTVEqys_vTQ&t=108s