我想存储图像和.DOCX / .DOC,.PPTX / .PPT,用我的软件的前端.pdf文件。 我不知道如何实现这一点,如何将BLOB和CLOB文件插入到表。 请帮忙。
我使用的Kubuntu 11.04,MySQL5的,Qt的4.7.3。
我想存储图像和.DOCX / .DOC,.PPTX / .PPT,用我的软件的前端.pdf文件。 我不知道如何实现这一点,如何将BLOB和CLOB文件插入到表。 请帮忙。
我使用的Kubuntu 11.04,MySQL5的,Qt的4.7.3。
方法有两种:
1 -使用LOAD_FILE功能-
INSERT INTO table1 VALUES(1, LOAD_FILE('data.png'));
2 - 将文件作为十六进制字符串,例如 -
INSERT INTO table1 VALUES
(1, x'89504E470D0A1A0A0000000D494844520000001000000010080200000090916836000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001E49444154384F6350DAE843126220493550F1A80662426C349406472801006AC91F1040F796BD0000000049454E44AE426082');
INSERT INTO MY_TABLE(id, blob_col) VALUES(1, LOAD_FILE('/full/path/to/file/myfile.png')
LOAD_FILE连接到它的许多条件。 从MySQL文档 :
LOAD_FILE(FILE_NAME)
读取该文件,并作为一个字符串返回文件内容。 要使用此功能,该文件必须位于服务器主机上,则必须指定完整路径名的文件,你必须具有FILE权限。 该文件必须由所有和它的尺寸小于max_allowed_packet个字节可读。 如果secure_file_priv系统变量设置为一个非空目录名,要加载的文件必须位于该目录中。
如果该文件不存在或无法读取,因为上述条件的一个不被满足,则函数返回NULL。
而且,也有在Linux中LOAD_FILE错误。 见http://bugs.mysql.com/bug.php?id=38403的错误,和MySQL的LOAD_FILE返回NULL的解决方法。 在Ubuntu 12.04中,MySQL 32年5月5日,这对我的作品:
chown mysql:mysql /tmp/yourfile
或者你可以只使用MySQL工作台,选择该行,最后一行,插入一行没有一滴,然后只需点击右键并选择“负载值从文件”。
INSERT INTO table1 VALUES(1, LOAD_FILE(data.png));
不会工作,但
INSERT INTO table1 VALUES(1, LOAD_FILE('data.png'));
应该(假设data.png在本地目录存在)