MySQL : Load data infile

标签 mysql

使用加载数据插入查询时出现错误。

"load data infile '/home/bharathi/out.txt' into table Summary"

此文件位于 位置。但是 mysql 抛出以下错误。 错误 29 (HY000):找不到文件“/home/bharathi/out.txt”(错误代码:13)

show variables like 'data%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

数据目录指向根权限文件夹。我无法更改此变量,因为它是只读的。

如何进行加载数据infile操作?

我尝试更改文件权限、加载本地文件中的数据。它不会工作。

最佳答案

根据 LOAD DATA INFILE Syntax 记录:

For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all. Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege. See Section 6.2.1, “Privileges Provided by MySQL”. For non-LOCAL load operations, if the secure_file_priv system variable is set to a nonempty directory name, the file to be loaded must be located in that directory.

因此,您应该:

  • 确保您的 MySQL 用户具有 FILE 权限,并且假设未设置 secure_file_priv 系统变量:

    • 使文件对所有人都可读;或者

    • 将文件移动到数据库目录。

  • 否则,使用LOCAL 关键字让您的客户端读取文件并将其传输到服务器。但是,请注意:

    LOCAL works only if your server and your client both have been configured to permit it. For example, if mysqld was started with --local-infile=0, LOCAL does not work. See Section 6.1.6, “Security Issues with LOAD DATA LOCAL.

关于MySQL : Load data infile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421312/

相关文章:

java - hibernate 、MySql、 Spring

php - 分组依据中的第一个和最后一个记录。无法到达最后

php - 如何通过单个查询获得两个单独的结果

java - 使用 OneToOne 映射在 Spring Hibernate 中反序列化异常

php - 忘记密码成功连接到邮箱

c# - DataGridView 更新数据源受 ProcessDataGridViewKey 阻碍?

php - 在多开发 nginx 设置中保护密码

mysql - 将包含 LEFT OUTER JOIN 的 SELECT 语句调整为同一表中的 UPDATE 语句 - 可能吗?

mysql - SQL 查询 WHERE 子句是一个参数

mysql - 如何在没有安装 office 的情况下从 winform vb.net 2008 导出到 excel?