मैं तैयार बयान का उपयोग किए बिना कुछ बाइनरी डेटा को MySQL डेटाबेस में डालने का प्रयास कर रहा हूं। इसका कारण यह है कि मैं एक बार में एक ही डालने में हजारों कथनों को एक साथ जोड़ता हूं। (वास्तव में कैसे MySQL डंप & आयात काम करता है)MySQL (बिना तैयार किए गए स्टेटमेंट के) में बाइनरी डेटा डालना
मैं निम्नलिखित बयानों की कोशिश की है, लेकिन सभी असफल रहे हैं:
My_table मानों में सम्मिलित करें (1, 'जी = एफ |} एक्स ', 2);
my_table VALUES (1, CAST ('g = F | } X ' AS BINARY) में INSERT INSERT), 2);
my_table मूल्यों में प्रवेश करें (1, कनवर्टर ('जी = एफ | } एक्स ', बिनरी), 2);
My_table मानों में सम्मिलित करें (1, बाइनरी 'जी = एफ |} एक्स', 2)
त्रुटि मैं मिलता है:
com.mysql.jdbc.MysqlDataTruncation: डेटा काट-छांट: डेटा बहुत लंबा स्तंभ 'binary_data' पंक्ति 1
पर के लिए कोड मैं बयान निष्पादित करने के लिए उपयोग करने के लिए बस है:
conn.createStatement()। ExecuteUpdate (sql);
PreparedStatements अच्छा काम (लेकिन इस मामले में बहुत धीमी गति से कर रहे हैं)
डेटाबेस में वास्तविक स्ट्रिंग मैं एक छोटे से differet प्रदर्शित करता है:
जी = ÷ की | ¸} एक्स £ ì [
बाइनरी देखें: 67 3 डी 81 F7 19 f3 46 7c B8 7 दिन 58 8C 10 a3 ec 5 ब
जावा बाइट्स: 103, 61, -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91
क्या यह एन्कोडिंग के साथ कुछ करने के लिए हो सकता है?
किसी भी संकेत बहुत apprecaited, रो
बाइनरी डेटा डाला जा सकता है:
आप सीधे बाइट्स हेक्स में बदल जाती है और उदाहरण के लिए द्वारा 0x
preceeded लिख कर बाइनरी डेटा सम्मिलित कर सकते हैं सरल 'स्टेटमेंट' का उपयोग कर संभव है। –
आप जानते हैं कि आपने "अनुकूलन" संभवतः बेकार है? तैयार बयानों का मुद्दा यह है कि वे MySQL द्वारा "precompiled" हैं और आप केवल MySQL पैरामीटर फ़ीड करते हैं। चाहे आप बयानों को जोड़ते हों या नहीं, आप वैसे भी हजारों मूल्य भेज रहे हैं। और स्वाभाविक रूप से, यह एक समस्या साबित हुई क्योंकि आप आसानी से बाइनरी डेटा नहीं डाल सकते हैं। –
आप अपने 'INSERT' कथन कैसे बना रहे हैं? एन्कोडिंग की संभावना महत्वपूर्ण है, लेकिन आपको सही भागने के बारे में भी चिंता करने की ज़रूरत है (उदाहरण के लिए यदि बाइनरी डेटा में '' 'है। इसके अलावा आप अपने जेडीबीसी [कनेक्शन पैरामीटर] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html) की जांच करते हैं, जैसे कि 'useUnicode' और' characterEncoding '? बैच मोड के लिए –