programing

MySQL의 바이너리 데이터

nicescript 2023. 2. 2. 21:25
반응형

MySQL의 바이너리 데이터

MySQL에 바이너리 데이터를 저장하는 방법은 무엇입니까?

phpguy에 의한 답변은 맞지만, 거기에 추가되는 세부사항에 대해서는 많은 혼란이 있을 것 같습니다.

기본적인 답은 다음과 같습니다.BLOB데이터 유형/속성 도메인.BLOB는 Binary Large Object의 약자로, 이 열 데이터 유형은 이진 데이터를 처리하는 데 고유합니다.

MySQL 관련 매뉴얼 페이지를 참조하십시오.

다음과 같은 테이블의 경우:

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 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>

관계형 데이터베이스에 바이너리 데이터를 저장하지 않는 것이 좋습니다.관계형 데이터베이스는 고정 크기 데이터와 함께 작동하도록 설계되었습니다. 데이터베이스의 속도가 왜 이렇게 빠른지에 대한 Joel의 이전 기사를 기억하십시오. 레코드에서 다른 레코드로 이동하는 데 정확히 1개의 포인터가 필요하기 때문입니다.미정의의 BLOB 데이터나 사이즈가 큰 BLOB 데이터를 추가하면 퍼포먼스가 향상됩니다.

대신 파일을 파일 시스템에 저장하고 파일 이름을 데이터베이스에 저장하십시오.

아직 저장 내용을 언급하지 않은 경우, 저장해야 하는 이유가 있을 수 있지만, 대부분의 경우 정답은 '파일 시스템 참조로'이며 실제 데이터는 파일 시스템 어딘가에 있습니다.

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

하다에서는 " " 를 하고 있습니다.LONGBLOB, 타입에는 다른 타입이 즉, 이 외에 바이너리 데이터 타입도 있습니다.

TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY

각각 사용 사례가 있습니다.된 데이터인 경우, (패킹된 데이터)는 다음과 같습니다.BINARY ★★★★★★★★★★★★★★★★★」VARBINARY대부분의 시간에는 효과가 있습니다.그들은 그것들을 색인화할 수 있다는 부가적인 이점을 가지고 있다.

한 것은 한 번 .base64이치노, 문자만 됩니다.조금 더 많은 공간과 시간이 소요되지만 바이너리 데이터와 관련된 문제는 해소됩니다.

권장되지 않음 BLOB 필드가 있는 경우 다음과 같이 데이터를 저장할 수 있습니다.

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

여기서부터 착안.

바이너리 데이터를 저장해야 할 때 항상 사용하는VARBINARYd0nut이 이전 답변 중 하나에서 도입한 형식입니다.

매뉴얼은 MySQL 웹사이트에서 문서화된 토픽 12.4.2 The BINARY and VARB에 있습니다.INARY 타입.

장점이 무엇인지 묻는 경우 질문을 읽어보십시오.varchar 대신 why-varbinary-of-varchar.

BLOB에 데이터를 어떻게 가져올지도 의문입니다.PHP 예시와 같이 데이터를 INSERT 문에 넣을 수 있습니다(단, addslash 대신 mysql_real_escape_string을 사용해야 합니다).파일이 데이터베이스 서버에 있는 경우 MySQL의 LOAD_를 사용할 수도 있습니다.파일

언급URL : https://stackoverflow.com/questions/17/binary-data-in-mysql

반응형