首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LOAD_FILE()函数的替代方法?

LOAD_FILE()函数的替代方法?
EN

Stack Overflow用户
提问于 2012-06-13 17:56:15
回答 4查看 7.4K关注 0票数 4

我已经搜索并找到了这篇文章(http://stackoverflow.com/questions/1814297/cant-load-file-data-in-the-mysql-directory),但它对我不起作用。

我是Ubuntu12.04,MySQL版本是5.5.22-0ubuntu1

我已经以根用户身份登录到MySQL,所以授权应该都是正常的:

代码语言:javascript
复制
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+

我试图将文本文件中的一些数据插入到MySQL数据库中,但LOAD_FILE函数似乎不能正常工作

我创建了一个测试文件,权限为777,并复制到安装的根目录(我尝试将所有者/组更改为root:root和mysql:mysql,但仍然无效):

代码语言:javascript
复制
mysql> select load_file('/test.txt');
+------------------------+
| load_file('/test.txt') |
+------------------------+
| NULL                   |
+------------------------+
1 row in set (0.00 sec)

但如果我试着这样做:

代码语言:javascript
复制
mysql> select load_file('/etc/hosts');

它工作得很好。如果我将测试文件复制到/etc中,仍然会失败。

有没有人以前见过这种情况,或者可以告诉我另一种加载到数据库的方法?

EN

回答 4

Stack Overflow用户

发布于 2012-06-13 18:00:26

要使用load_file,必须(从documentation)满足以下条件:

  1. 文件必须位于服务器主机上
  2. 您必须指定文件的完整路径名,并且您必须具有FILE权限。
  3. 文件必须可供所有人读取,并且其大小必须小于max_allowed_packet字节。
  4. 如果secure_file_priv系统变量设置为非空目录名称,则要加载的文件必须位于该目录中。

如果文件包含您想要执行的SQL语句,一种更简单的方法可能是通过管道将其输入:

mysql -u foo -p dbname < filename.sql

票数 1
EN

Stack Overflow用户

发布于 2013-09-19 15:34:56

我不是MySQL方面的专家,但我观察到Ubuntu5.5版在MySQL操作系统上有问题。

即使在遵循了mysql docs中的文档之后,LOAD_FILE()也不起作用。有一个名为apparmour的服务,阻止函数LOAD_FILE()执行,我试图停止该服务,但它仍然存在.

我知道这不能解决你的问题,但至少它能帮你找到问题所在……

票数 0
EN

Stack Overflow用户

发布于 2013-12-27 03:43:14

考虑一下这一行(注意,我在Ubuntu上):

代码语言:javascript
复制
printf "$(cat update_xml.sql)" "$(cat my.xml | sed s/"'"/"\\\'"/g)" | mysql -h myRemoteHost -u me -p***

在update_xml.sql中有:

代码语言:javascript
复制
UPDATE
   myTable
SET
   myXmlColumn = '%s'
WHERE
   ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11012445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档