如何在MySQL中插入BLOB和CLOB文件?

时间:2012-05-24 00:52:35

标签: mysql ubuntu qt4

我想使用我软件的前端存储图像和.docx / .doc,.pptx / .ppt,.pdf文件。我不明白如何实现它以及如何将BLOB和CLOB文件插入表中。请帮忙。

我使用的是Kubuntu 11.04,MySQL5,Qt 4.7.3。

6 个答案:

答案 0 :(得分:28)

两种方式:

1 - 使用LOAD_FILE功能 -

INSERT INTO table1 VALUES(1, LOAD_FILE('data.png'));

2 - 将文件作为十六进制字符串插入,例如 -

INSERT INTO table1 VALUES 
  (1, x'89504E470D0A1A0A0000000D494844520000001000000010080200000090916836000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001E49444154384F6350DAE843126220493550F1A80662426C349406472801006AC91F1040F796BD0000000049454E44AE426082');

答案 1 :(得分:11)

INSERT INTO MY_TABLE(id, blob_col) VALUES(1, LOAD_FILE('/full/path/to/file/myfile.png')

LOAD_FILE附加了许多条件。来自MySQL documentation

  

LOAD_FILE(FILE_NAME)

     

读取文件并以字符串形式返回文件内容。要用这个   功能,文件必须位于服务器主机上,您必须   指定文件的完整路径名,您必须具有FILE   特权。该文件必须是所有人都可读的,其大小必须小于   max_allowed_pa​​cket个字节。如果secure_file_priv系统变量是   设置为非空目录名称,要加载的文件必须是   位于该目录中。

     

如果文件不存在或因为其中一个而无法读取   如果不满足上述条件,则该函数返回NULL。

此外,Linux中存在LOAD_FILE错误。有关错误,请参阅http://bugs.mysql.com/bug.php?id=38403,有关解决方法,请参阅MySQL LOAD_FILE returning NULL。在Ubuntu 12.04,MySQL 5.5.32上,这对我有用:

  1. 将文件复制到/ tmp
  2. 将所有权更改为mysql用户chown mysql:mysql /tmp/yourfile
  3. 以mysql root用户身份登录mysql,确保您拥有FILE权限
  4. 运行您的插入声明

答案 2 :(得分:4)

或者您只能使用MySQL Workbench,选择行,最后一行,插入没有blob的行,然后右键单击并选择“从文件加载值”。

答案 3 :(得分:1)

INSERT INTO table1 VALUES(1, LOAD_FILE(data.png));

无效,但

INSERT INTO table1 VALUES(1, LOAD_FILE('data.png'));

应该(假设本地目录中存在data.png)

答案 4 :(得分:0)

对于那些通过查询保存Blob时出现“列'图像'不能为空”的人错误:-

打开您的MySql Command Line Client,然后以root用户登录并键入

mysql> SHOW VARIABLES LIKE "secure_file_priv";

这将向您显示MySql用于访问文件的安全路径。像

+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

您可以将文件粘贴到此文件夹中,也可以将“ secure_file_priv”变量值更改为“空字符串”,以便它可以从任何位置读取文件。

答案 5 :(得分:0)

如果使用的是mysql工作台,只需右键单击字段(单元格)并选择“从文件中加载值”选项,然后浏览至文件,然后单击“打开”,然后单击“应用”。它将自动生成这样的查询

   Date     Name
2002-07-31  Paul
2002-07-31  John
2002-07-31  Silvia
2002-07-31  Mike
2002-07-31  Cindy
2002-08-01  Paul
2002-08-01  John
2002-08-01  Silvia
2002-08-01  Mike
2002-08-01  Cindy
2002-08-02  Paul
2002-08-02  John
2002-08-02  Silvia
2002-08-02  Mike
2002-08-02  Cindy
2002-08-03  Paul
2002-08-03  John
2002-08-03  Silvia
2002-08-03  Mike
2002-08-03  Cindy
.....

2002-08-31  Paul
2002-08-31  David
2002-08-31  Harry
2002-08-31  Mike
2002-08-31  Britney
2002-09-01  Paul
2002-09-01  David
2002-09-01  Harry
2002-09-01  Mike
2002-09-01  Britney
....

2002-09-30  Francis
2002-09-30  Michael
2002-09-30  Charlie
2002-09-30  Joe
2002-09-30  Hilary