我的SQL BLOB(LONGBLOB)类型破坏了我的数据

时间:2014-09-13 10:17:54

标签: mysql blob

我正在使用blob类型将文件写入 MySql 表。 我需要这样做的原因有多种 - 我不能只使用文件系统。

我发现将文件写入db然后从db读回,文件已损坏。 我可以使用SQL而不是其他任何东西来复制它。 该文件应该很容易适应LONGBLOB,所以我不认为数据被截断。事实上,正在读回的数据大于正在写入的数据。 我也遇到过与BLOB和MEDIUMBLOB相同的问题。

这是SQL:

CREATE TABLE Video(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ShopAssistant_Id int NOT NULL,
Data LONGBLOB NOT NULL,
FOREIGN KEY (ShopAssistant_Id) REFERENCES ShopAssistant(id)
);

--insert data from a file
insert into video (shopassistant_id, data) values (1, LOAD_FILE('/Users/tmck/temp/introduction.mp4'));
--read data back into a different file
select data into outfile '/Users/tmck/temp/ret.mp4' from Video;

如果我们现在比较文件,ret.mp4比introduction.mp4大,单个字节已被更改,文件已损坏并且无法播放。 文件本身很小,大约245 KB。

选项'选项'在MySql中导致它转换我的数据?

1 个答案:

答案 0 :(得分:1)

好的,在这里找到答案       http://ask.metafilter.com/161415/Export-my-Mysql-PDF-binaryblob-into-a-file

正确写入数据,select into outfile正在破坏数据 soln是为MYSQL添加一些转义提示,如下所示:

   select data into outfile '/Users/tmck/temp/ret.mp4' FIELDS TERMINATED BY '' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '' STARTING BY '' from Video