মাইএসকিউএলে ব্যাচ সন্নিবেশ কীভাবে করবেন


148

আমার কাছে 1-বহু সংখ্যক রেকর্ড রয়েছে যা একটি সারণীতে প্রবেশ করা দরকার। কোয়েরিতে এটি করার সর্বোত্তম উপায় কী? আমার কি কেবল একটি লুপ তৈরি করতে হবে এবং পুনরাবৃত্তির জন্য একটি রেকর্ড ?োকানো উচিত? নাকি এর চেয়ে ভাল উপায় আছে?


1
কোনও বিবৃতি ব্যবহারের চেষ্টা করার আগে দয়া করে ডকুমেন্টেশন পড়ুন বা ফাংশন করুন। INSERTএই স্থানীয়ভাবে সমর্থন !
অরবিট

3
আপনার যদি সত্যিই প্রচুর পরিমাণে রেকর্ড থাকে এবং সেগুলি CSV ফাইল হিসাবে ফর্ম্যাট করতে পারে তবে লোড ডেটা ইনফিল বিবৃতি বা মাইএসকিপ্লিম্পোর্ট কমান্ডটি দেখুন।
স্কাউকনুল

রেকর্ডের জন্য, লোড ডেটা একটি খুব নমনীয় কমান্ড যার জন্য সিএসভি ইনপুট প্রয়োজন হয় না ; যে কোনও পাঠ্য বিন্যাসটি করবে এবং ইনপুট ডেটা পার্সিং ও ম্যানিপুলেট করার জন্য বেশ কয়েকটি সহায়ক প্যারামিটার রয়েছে। স্থানীয় ডিবিতে ডেটা লোড করার এটি অবশ্যই দ্রুততম উপায়। উপরে "সেরা" বলতে কী বোঝায় তা পরিষ্কার নয়: যেমন সরলতা (INSERT বিবৃতি ব্যবহার করুন) ট্রাম্পের গতি (লোড ডেটা ব্যবহার করুন)।
এডওয়ার্ডগার্সন

উত্তর:


298

থেকে মাইএসকিউএল ম্যানুয়াল

VALUES সিনট্যাক্স ব্যবহার করে INSERT স্টেটমেন্টগুলি একাধিক সারি সন্নিবেশ করতে পারে। এটি করার জন্য, কলাম মানগুলির একাধিক তালিকাগুলি অন্তর্ভুক্ত করুন, প্রত্যেকটি বন্ধনীতে আবদ্ধ এবং কমা দ্বারা পৃথক। উদাহরণ:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

7
লোড ডেটা ইনফাইলে এর চেয়ে ধীর?
শ্রীচুলো

সঞ্চিত পদ্ধতিতে এই সন্নিবেশ বিবৃতিটি লিখতে সিনট্যাক্স কী?
নিতিন সাওয়ান্ত

@ নিতিন কি একই সিনট্যাক্স হবে না .. ??? এটি আমি এসকিউএল সার্ভারে যাই হোক না কেন করব।
বিজ্ঞাপনগুলি

13
দয়া করে নোট করুন যে প্রশ্নটিতে " ব্যাচ সন্নিবেশগুলি কীভাবে করবেন" লেবেল দেওয়ার সময় এই উত্তরটি আসলে বাল্ক সন্নিবেশ। বাল্ক সাধারণত দ্রুত হয়, এই প্রশ্নটি দেখুন
মাইক ডেমেনোক

2
প্রতি @Koffeehaus এই তাই উত্তর @Lukman, মূল্যবোধের নম্বর থেকে / সারি যে ঢোকানো যায় দ্বারা সীমাবদ্ধmax_allowed_packet
Sepster

22

বেশিরভাগ সময়, আপনি কোনও মাইএসকিউএল ক্লায়েন্টে কাজ করছেন না এবং যথাযথ এপিআই ব্যবহার করে আপনার ব্যাচ একসাথে করা উচিত।

জেডিবিসিতে যেমন:

connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/tjvbtupd.htm


5
ব্যাচ টিপে একটি ভাল ব্লগ এন্ট্রি (জাভা, কিন্তু এটা এর প্রাসঙ্গিক কোন ভাষা থেকে): viralpatel.net/blogs/batch-insert-in-java-jdbc
Kangur


6

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


1
কেমনLOAD DATA LOCAL INFILE '/users/name/txt.file'
ডাবল_জে

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