MySQL में बाइनरी डेटा

वोट
163

मैं कैसे में बाइनरी डेटा स्टोर करते हैं MySQL ?

01/08/2008 को 06:09
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


10 जवाब

वोट
128

phpguy द्वारा जवाब सही है, लेकिन मुझे लगता है कि वहाँ अतिरिक्त विवरण में भ्रम का एक बहुत है।

बुनियादी जवाब एक में है BLOBडेटा प्रकार / विशेषता डोमेन। ब्लॉब बाइनरी बड़े ऑब्जेक्ट के लिए कम है और उस स्तंभ डेटा प्रकार बाइनरी डेटा से निपटने के लिए विशिष्ट है।

देखें MySQL के लिए प्रासंगिक मैनुअल पृष्ठ

01/08/2008 को 13:16
का स्रोत उपयोगकर्ता

वोट
54

इस तरह एक मेज के लिए:

CREATE TABLE binary_data (
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    description CHAR(50),
    bin_data LONGBLOB,
    filename CHAR(50),
    filesize CHAR(50),
    filetype CHAR(50)
);

यहाँ एक PHP उदाहरण है:

<?php
    // store.php3 - by Florian Dittmer <dittmer@gmx.net>
    // Example php script to demonstrate the storing of binary files into
    // an sql database. More information can be found at http://www.phpbuilder.com/
?>

<html>
    <head><title>Store binary data into SQL Database</title></head>

    <body>
        <?php
            // Code that will be executed if the form has been submitted:

            if ($submit) {
                // Connect to the database (you may have to adjust
                // the hostname, username or password).

                mysql_connect("localhost", "root", "password");
                mysql_select_db("binary_data");

                $data = mysql_real_escape_string(fread(fopen($form_data, "r"), filesize($form_data)));

                $result = mysql_query("INSERT IGNORE  INTO binary_data (description, bin_data, filename, filesize, filetype) ".
                                    "VALUES ('$form_description', '$data', '$form_data_name', '$form_data_size', '$form_data_type')");

                $id= mysql_insert_id();
                print "<p>This file has the following Database ID: <b>$id</b>";

                mysql_close();
            } else {

                // else show the form to submit new data:
        ?>
        <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
            File Description:<br>
            <input type="text" name="form_description"  size="40">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
            <br>File to upload/store in database:<br>
            <input type="file" name="form_data"  size="40">
            <p><input type="submit" name="submit" value="submit">
        </form>

        <?php
            }
        ?>
    </body>
</html>
01/08/2008 को 06:12
का स्रोत उपयोगकर्ता

वोट
37

मैं दृढ़ता से अनुशंसा के खिलाफ एक संबंधपरक डेटाबेस में बाइनरी डेटा भंडारण। रिलेशनल डेटाबेस निश्चित आकार के डेटा के साथ काम करने के लिए तैयार कर रहे हैं; याद रखें: यह है कि जहां उनके प्रदर्शन ताकत है जोएल के पुराने लेख क्यों डेटाबेस इतनी तेजी से कर रहे हैं पर? एक और रिकॉर्ड करने के लिए एक रिकार्ड से स्थानांतरित करने के लिए है क्योंकि यह वास्तव में 1 सूचक वेतन वृद्धि लेता है। आप अपरिभाषित और बेहद अलग आकार के ब्लॉब डेटा जोड़ने, तो आप प्रदर्शन पेंच होगा।

इसके बजाय, फाइल सिस्टम में दुकान फ़ाइलें, और अपने डेटाबेस में दुकान फ़ाइल नाम।

17/09/2008 को 21:37
का स्रोत उपयोगकर्ता

वोट
20

एक ओर जहां आप नहीं कहा कि तुम क्या भंडारण कर रहे हैं और ऐसा करने के लिए एक महान कारण हो सकता है, अक्सर जवाब है और वास्तविक डेटा 'एक फाइल सिस्टम संदर्भ के रूप में' कहीं फाइल सिस्टम पर है।

http://www.onlamp.com/pub/a/onlamp/2002/07/11/MySQLtips.html

02/08/2008 को 15:57
का स्रोत उपयोगकर्ता

वोट
16

यह डेटा आप स्टोर करना चाहते हैं पर निर्भर करता है। ऊपर के उदाहरण का उपयोग करता है LONGBLOBडेटा प्रकार है, लेकिन जैसा कि आप जानते अन्य बाइनरी डेटा स्वरूपों देखते हैं कि होना चाहिए:

TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY

प्रत्येक उनके उपयोग के मामलों है। यदि यह एक जाना जाता है (छोटी) लंबाई (जैसे पैक डेटा) अक्सर कई बार है BINARYया VARBINARYकाम करेंगे। वे उन पर सक्षम टन सूचकांक होने का अतिरिक्त लाभ है।

31/12/2010 को 02:04
का स्रोत उपयोगकर्ता

वोट
13

हालांकि यह आवश्यक नहीं होना चाहिए, आप की कोशिश कर सकते base64में एन्कोडिंग डेटा और इसे बाहर डिकोडिंग। इसका मतलब है कि डाटाबेस सिर्फ ASCII वर्ण होगा। यह एक थोड़ा और अधिक स्थान और समय है, लेकिन साथ बाइनरी डेटा का सफाया हो जाएगा करने के लिए कोई मुद्दा ले जाएगा।

16/09/2008 को 05:07
का स्रोत उपयोगकर्ता

वोट
10

- अगर नहीं की सिफारिश की - ब्लॉब क्षेत्र मौजूद है, तो आप डेटा इस तरह से बचा सकते हैं:

mysql_query("UPDATE table SET field=X'".bin2hex($bin_data)."' WHERE id=$id");

आइडिया से लिया यहाँ

12/09/2013 को 13:00
का स्रोत उपयोगकर्ता

वोट
9

जब मैं बाइनरी डेटा स्टोर करने के लिए की जरूरत है मैं हमेशा का उपयोग VARBINARY, प्रारूप के रूप में पेश byd0nut

आप दस्तावेज विषय के अंतर्गत MySQL वेबसाइट पर दस्तावेज़ीकरण देख सकते हैं 12.4.2 बायनरी और VARBINARY प्रकार

आप पूछ रहे हैं, तो क्या advantagese हैं, तो कृपया प्रश्न पर देखने क्यों-varbinary-बजाय के- varchar

01/05/2014 को 10:37
का स्रोत उपयोगकर्ता

वोट
9

सवाल यह भी ब्लॉब में डेटा प्राप्त करने के लिए कैसे पैदा होती है। आप रख सकते हैं एक सम्मिलित में डेटा बयान ध्यान न दें, पीएचपी उदाहरण से पता चलता है के रूप में (हालांकि आप का उपयोग करना चाहिए mysql_real_escape_string addslashes के बजाय)। फ़ाइल डेटाबेस सर्वर पर मौजूद है, तो आप भी MySQL का उपयोग कर सकते LOAD_FILE

27/08/2008 को 16:13
का स्रोत उपयोगकर्ता

वोट
8

उपलब्ध में एक बहुत बेहतर भंडारण कार्यान्वयन यहाँ । आप फ्लोरियन कार्यान्वयन में समस्याएं आती हैं जाएगा।

17/09/2008 को 10:53
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more