我正在使用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中导致它转换我的数据?
答案 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