在MySQL中怎样运用LOAD_FILE()函数?(代码示例)
发布时间:08/01 来源:未知 浏览:
关键词:
语法
LOAD_FILE(file_name)
其中file_name是文件的完备途径。
下面是我从一个文件当选择内容的示例:
SELECT LOAD_FILE('/data/test.txt') AS Result;
效果:
+------------------------------------------+ | Result | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
一个数据库的例子
下面是一个将文件内容插入数据库时查询的示例:
INSERT INTO MyTable (FileId, UserId, MyBlobColumn) VALUES (1, 20, LOAD_FILE('/data/test.txt'));
在本例中,列MyBlobColumn有一个BLOB数据类型(允许它存储二进制数据)。
此刻它在数据库中,我们可以选中它:
SELECT MyBlobColumn FROM MyTable WHERE UserId = 20;
效果:
+------------------------------------------+ | MyBlobColumn | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
要是文件不存在,返回NULL:
SELECT LOAD_FILE('/data/oops.txt') AS Result;
效果:
+--------+ | Result | +--------+ | NULL | +--------+
要是谴责脚下列前提之一,都有可能返回NUll:
1.文件必需位于办事器主机上。
2.你必需拥有该FILE权限才干读取该文件。具有该FILE权限的会员可以读取办事器主机上的任何文件,该文件是world-readable的或MySQL办事器可读的。
3.文件必需是所有人都可读的,而且它的大小小于max_allowed_packet字节。
你可以这样检查:
SHOW VARIABLES LIKE 'max_allowed_packet';
效果:
+--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | max_allowed_packet | 67108864 | +--------------------+----------+
要是secure_file_priv系统变量被设定为非空名目名,则要加载的文件必需位于该名目中。
你可以这样检查:
SHOW VARIABLES LIKE 'secure_file_priv';
效果:
+------------------+--------+ | Variable_name | Value | +------------------+--------+ | secure_file_priv | /data/ | +------------------+--------+
在本例中,我只能从/data/名目中读取文件。