2012-05-24 18 views
18

मैं अपने सॉफ़्टवेयर के सामने वाले अंत का उपयोग करके छवियों और .docx/.doc, .pptx/.ppt, .pdf फ़ाइलों को संग्रहीत करना चाहता हूं। मुझे समझ में नहीं आता कि इसे कैसे कार्यान्वित किया जाए और तालिका में BLOB और CLOB फ़ाइलों को कैसे सम्मिलित किया जाए। कृपया मदद करे।MySQL में BLOB और CLOB फ़ाइलों को कैसे सम्मिलित करें?

मैं कुबंटू 11.04, MySQL5, Qt 4.7.3 का उपयोग कर रहा हूं।

उत्तर

23

दो तरीके:

1 -

INSERT INTO table1 VALUES(1, LOAD_FILE('data.png')); 

2 - - एक LOAD_FILE फ़ंक्शन का उपयोग हेक्स स्ट्रिंग है, उदा फ़ाइल सम्मिलित करें -

INSERT INTO table1 VALUES 
    (1, x'89504E470D0A1A0A0000000D494844520000001000000010080200000090916836000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001E49444154384F6350DAE843126220493550F1A80662426C349406472801006AC91F1040F796BD0000000049454E44AE426082'); 
+2

एक 3 विकल्प 2 एक के करीब है और पढ़ता के रूप में 'table1 मान (1, 0x89504E470D0A1A0A0000000D494844520000001000000010080200000090916836000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001E49444154384F6350DAE843126220493550F1A80662426C349406472801006AC91F1040F796BD0000000049454E44AE426082) में डालने,'। – glglgl

+0

निम्नलिखित काम नहीं कर रहा है: तालिका 1 में INSERT (मूल्य, 1, LOAD_FILE (data.png)); – user1411472

+1

जांचें कि फ़ाइल मौजूद है या नहीं, पथ की जांच करें, फ़ाइल का आकार जांचें, क्या यह 'max_allowed_packet' कम या कम है। क्या आपके पास FILE विशेषाधिकार है? किस प्रकार का बीएलओबी फ़ील्ड, फाइल को स्टोर करने के लिए पर्याप्त है? – Devart

1
INSERT INTO table1 VALUES(1, LOAD_FILE(data.png)); 

काम करेंगे नहीं लेकिन

INSERT INTO table1 VALUES(1, LOAD_FILE('data.png')); 

चाहिए (यह मानते हुए data.png स्थानीय निर्देशिका में मौजूद है)

11
INSERT INTO MY_TABLE(id, blob_col) VALUES(1, LOAD_FILE('/full/path/to/file/myfile.png') 

LOAD_FILE कई परिस्थितियों इसे से जुड़ी है। MySQL documentation से:

LOAD_FILE (FILE_NAME)

फ़ाइल पढ़ता है और एक स्ट्रिंग के रूप फ़ाइल सामग्री देता है। इस फ़ंक्शन का उपयोग करने के लिए, फ़ाइल सर्वर होस्ट पर स्थित होना चाहिए, आपको फ़ाइल में पूर्ण पथ नाम निर्दिष्ट करना होगा, और आपके पास FILE विशेषाधिकार होना चाहिए। फ़ाइल को max_allowed_packet बाइट्स से कम और उसके आकार के द्वारा पठनीय होना चाहिए। यदि secure_file_priv सिस्टम चर एक nonempty निर्देशिका नाम पर सेट है, तो लोड होने वाली फ़ाइल उस निर्देशिका में स्थित होना चाहिए।

यदि फ़ाइल मौजूद नहीं है या पढ़ा नहीं जा सकता है क्योंकि पूर्व शर्तों में से कोई संतुष्ट नहीं है, तो फ़ंक्शन न्यूल देता है।

इसके अलावा, लिनक्स में LOAD_FILE के साथ बग भी हैं। बग के लिए http://bugs.mysql.com/bug.php?id=38403 और वर्कअराउंड के लिए MySQL LOAD_FILE returning NULL देखें। mysql जड़ उपयोगकर्ता के रूप में mysql में

  1. फाइल कॉपी/tmp को
  2. स्वामित्व बदलें उपयोगकर्ता mysql के लिए chown mysql:mysql /tmp/yourfile
  3. प्रवेश करें ताकि आप सुनिश्चित करें कि आप कर रहे हैं: Ubuntu 12.04, MySQL 5.5.32 पर, यह मेरे लिए काम करता फ़ाइल विशेषाधिकार
  4. भागो अपने डालने बयान
+0

'secure_file_priv' संकेत मेरे दिन को बचाया। वास्तविक मूल्य देखने के लिए 'mysql> SELECT @@ secure_file_priv; का उपयोग करें –

3

या आप केवल MySQL Workbench,, इस्तेमाल कर सकते हैं पंक्तियों का चयन करें, पिछले पंक्तियों ब्लॉब के बिना एक पंक्ति सम्मिलित है, तो सिर्फ सही क्लिक करें और "लोड मूल्य फ़ाइल से" का चयन करें ।

संबंधित मुद्दे