SQL Dump স্প্লিটার
একটি বড় .sql dump কে নিরাপদ statement সীমানায় ছোট ফাইলে ভাগ করুন, স্কিমা, ডেটা এবং constraints কে লোডযোগ্য ক্রমে রেখে।
🔒 এই টুলটি সম্পূর্ণভাবে আপনার ব্রাউজারে চলে। আপনার ফাইল কখনও সার্ভারে আপলোড করা হয় না।
একটি .sql ফাইল বেছে নিন (.sql.gz-ও কাজ করে)। এটি স্থানীয়ভাবে পড়া হয় এবং কখনো আপলোড করা হয় না।
বৈধ থাকতে একটি বড় একক স্টেটমেন্ট এই টার্গেট অতিক্রম করতে পারে।
SQL ডাম্প স্প্লিটার যেভাবে কাজ করে
- ডাম্প ফাইলটি যোগ করুন - একটি সাধারণ .sql বা কম্প্রেস করা .sql.gz দুটোই কাজ করে, এবং এটি পেজের মধ্যেই পড়া হয়, তাই কিছুই আপলোড হয় না।
- আপনার ইমপোর্ট টুল বা হোস্টিং সীমা গ্রহণ করতে পারে এমন একটি চাঙ্ক সাইজ বেছে নিন।
- ফাইলগুলো সংখ্যাক্রমিক অনুযায়ী লোড করুন। স্প্লিটারটি ডাম্পের মূল স্টেটমেন্ট ক্রম অক্ষুণ্ণ রাখে এবং যেকোনো স্টোরড প্রসিডিউর, ট্রিগার বা ফাংশন অক্ষত রাখে, তাই ইমপোর্ট করার আগে স্কিমা, ডেটা এবং কনস্ট্রেইন্ট সেকশনগুলো পর্যালোচনা করুন।
FAQ
কনস্ট্রেইন্ট কেন সবার শেষে লোড করতে হয়?
কারণ ডেটা ফাইলগুলো একে অপরকে রেফারেন্স করে। রেফারেন্স করা সারি তৈরি হওয়ার আগে ফরেন কি লোড করলে তা ব্যর্থ হয়, তাই সাধারণ ক্রম হলো স্কিমা, তারপর ডেটা, তারপর কনস্ট্রেইন্ট এবং ইনডেক্স।
আমি কি ফাইলের যেকোনো জায়গায় স্প্লিট করতে পারি?
না - স্টেটমেন্টের মাঝখানে স্প্লিট করলে এমন ফাইল তৈরি হয় যেগুলো আলাদাভাবে অবৈধ SQL হয়ে যায়। স্প্লিট অবশ্যই স্টেটমেন্ট সীমানায় হতে হবে, তাই সাধারণ লাইন-গণনা স্প্লিট প্রায়ই ভেঙে যায়।
এটি কি স্টোরড প্রসিডিউর, ট্রিগার এবং ফাংশন হ্যান্ডেল করে?
হ্যাঁ। যে ডাম্প DELIMITER ;; দিয়ে স্টেটমেন্ট ডিলিমিটার পরিবর্তন করে একটি রুটিন সংজ্ঞায়িত করে, তা শুরুর DELIMITER লাইন থেকে শেষের লাইন পর্যন্ত একটি অবিভাজ্য ব্লক হিসেবে রাখা হয়, তাই কোনো চাঙ্ক সীমানা কখনও প্রসিডিউর বডির ভেতরে বা DELIMITER ;; এবং তার উপর নির্ভরশীল বডির মাঝখানে পড়ে না।
আমি কি কম্প্রেস করা .sql.gz ডাম্প ব্যবহার করতে পারি?
হ্যাঁ - .gz ফাইলটি সরাসরি ড্রপ করুন, এটি স্প্লিট করার আগে আপনার ব্রাউজারেই ডিকম্প্রেস হয়ে যায়, একই স্ট্যান্ডার্ড gzip ফরম্যাট ব্যবহার করে যা gzip কমান্ড এবং mysqldump | gzip তৈরি করে। সার্ভার সাইডে কিছুই আপলোড বা কনভার্ট হয় না।
স্প্লিট করার পরও আমার ইমপোর্ট কেন ধীর?
স্প্লিটিং সাইজ সীমার সমাধান করে, গতির নয়। গতির জন্য, ইনডেক্স তৈরি করার আগে ডেটা লোড করুন এবং ব্যাচগুলো ট্রানজ্যাকশনে মুড়িয়ে নিন।
এটি কি শুধু MySQL ডাম্পের সাথে কাজ করে?
না। স্প্লিটিং সাধারণভাবে স্টেটমেন্ট-শেষ সেমিকোলনে ঘটে, তাই PostgreSQL বা অন্য SQL ডাম্পও নিরাপদে স্প্লিট হয়। MySQL-নির্দিষ্ট DELIMITER হ্যান্ডলিং শুধুমাত্র তখনই সক্রিয় হয় যখন একটি ডাম্প স্টোরড প্রসিডিউর বা ট্রিগারের জন্য সেই সিনট্যাক্স ব্যবহার করে - অন্যথায় এটি কোনো প্রভাব ফেলে না।
আমি কীভাবে চাঙ্ক সাইজ বেছে নেব?
পুরো ফাইলটি যা প্রত্যাখ্যান করছে তার সাথে মিলিয়ে নিন - phpMyAdmin এবং অনেক হোস্ট আপলোড সীমা কয়েক MB থেকে কয়েকশ MB পর্যন্ত রাখে, তাই সেই সীমা যাচাই করুন এবং তার নিরাপদে নিচে একটি চাঙ্ক সাইজ বেছে নিন। ছোট চাঙ্ক মানে শুধু ক্রমানুসারে ইমপোর্ট করার জন্য আরও বেশি ফাইল, এর বাইরে কোনো অসুবিধা নেই।
আমরা কীভাবে তুলনায় দাঁড়াই
| বৈশিষ্ট্য | Online Tool Store | একটি CLI স্ক্রিপ্ট | একটি IDE প্লাগইন |
|---|---|---|---|
| স্টেটমেন্ট-নিরাপদ সীমানা | ✓ | ✗ | ✓ |
| উৎস স্টেটমেন্ট ক্রম অক্ষুণ্ণ রাখে | ✓ | ✗ | কখনো কখনো |
| ডাম্প আপলোড করা হয় না | ✓ | ✓ | ✗ |
| হোস্টিং আপলোড সীমার ঊর্ধ্বে কাজ করে | ✓ | নির্ভর করে | ✗ |
| DELIMITER পরিবর্তনের সময়ও স্টোরড প্রসিডিউর/ট্রিগার অক্ষত রাখে | ✓ | শুধু যদি স্ক্রিপ্টটি DELIMITER-সচেতন হয় | ✓ |
| সরাসরি কম্প্রেস করা .sql.gz ডাম্প গ্রহণ করে | ✓ | sqlsplit.com-এ নিশ্চিত করা হয়েছে; একটি সাধারণ স্ক্রিপ্টের সাধারণত প্রথমে এটি ডিকম্প্রেস করা প্রয়োজন | ✓ |
SQL Dump Splitter সাহায্য করে যখন ফাইলের আকারের কারণে ইমপোর্ট ব্যর্থ হয় - এটি SQL যেখানে অনুমতি দেয় সেখানে স্প্লিট করে, আপনার জন্য একটি gzip করা ডাম্প ডিকম্প্রেস করে, এবং প্রতিটি চাঙ্ককে স্টেটমেন্ট-নিরাপদ রাখে, স্টোরড প্রসিডিউরসহ।