от
Как хранить двоичные данные в MySQL?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

10 Ответы

0 голосов
от
Как хранить двоичные данные в MySQL?
0 голосов
от
Ответ на phpguy правильное, но я думаю, что есть большая путаница в дополнительные детали. Основной ответ заключается в типе данных
BLOB
/ домен атрибут. Blob-это короткий для большого двоичного объекта и столбца тип данных предназначен для обработки двоичных данных. См. соответствующую страницу руководства для MySQL.
0 голосов
от
Для таблицы такой:
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:
0 голосов
от
Я настоятельно не рекомендую хранить двоичные данные в реляционной базе данных. Реляционные базы данных предназначены для работы с фиксированным объемом данных; вот где их сила производительность: помню старую статью Джоэля о том, почему базы так быстро? потому что это занимает ровно 1 инкремент указателя для перемещения от записи к другой записи. При добавлении данных Blob неопределенных и весьма различной величины, облажаетесь вы производительности. Вместо этого, хранить файлы в файловой системе, и хранить имена файлов в базе данных.
0 голосов
от
Пока ты не сказал, что вы храните, и вы можете иметь большие основания для этого, часто ответ в качестве ссылки файловой системы и реальные данные где-то в файловой системе. http://www.onlamp.com/pub/a/onlamp/2002/07/11/MySQLtips.html
0 голосов
от
Это зависит от данных, которые вы желаете сохранить. Приведенный выше пример использует тип данных
LONGBLOB
, но вы должны знать, что есть и другие двоичные форматы данных:
TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY
Каждый из них имеет свои варианты использования. Если это известный (короткий) длина (например, упакованные данные) часто
BINARY
или
VARBINARY
будет работать. Они имеют дополнительное преимущество, будучи в состоянии индекса т на них.
0 голосов
от
Хотя это не должно быть необходимым, вы можете попробовать кодирования данных
base64
и расшифровывать его. Это означает, что БД будут только символы ASCII. Это займет немного больше пространства и времени, но любой вопрос делать с двоичными данными будут исключены.
0 голосов
от
Если не рекомендуется - Blob поле существует, вы можете сохранить данные в таком виде:
mysql_query("UPDATE table SET field=X'".bin2hex($bin_data)."' WHERE id=$id");
Идея взята отсюда.
0 голосов
от
Кроме того, возникает вопрос, Как получить данные в BLOB. Вы можете поместить данные в Insert, как на примере показывает, (хотя вы должны использовать вместо использования mysql_real_escape_string функция addslashes). Если файл существует на сервере баз данных, можно также использовать в MySQL LOAD_FILE
0 голосов
от
Когда мне нужно хранить двоичные данные, я всегда использую формат
VARBINARY
, как ввели
byd0nut
. Вы можете найти документацию на сайте MySQL под документально раздел 12.4.2 в Binary и varbinary видах Если вы спрашиваете, что advantagese, пожалуйста, посмотрите на вопрос почему-типа varbinary вместо типа varchar
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...