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");
여기서부터 착안.
바이너리 데이터를 저장해야 할 때 항상 사용하는VARBINARY
d0nut이 이전 답변 중 하나에서 도입한 형식입니다.
매뉴얼은 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
'programing' 카테고리의 다른 글
Wikidata에서 데이터의 JSON 또는 RDF 일괄 Import는 어떻게 합니까? (0) | 2023.02.02 |
---|---|
MySQL 클라이언트가 내가 지정한 포트를 사용하지 않는 이유는 무엇입니까? (0) | 2023.02.02 |
ID를 가진 CreateElement? (0) | 2023.02.02 |
왜 PHP json_encode 함수는 UTF-8 문자열을 16진수 엔티티로 변환합니까? (0) | 2023.02.02 |
재료 디자인 네비게이션 드로어의 햄버거 아이콘 색상 변경 방법 (0) | 2023.02.02 |