使用加载数据插入查询时出错.
"load data infile '/home/bharathi/out.txt' into table Summary"
Run Code Online (Sandbox Code Playgroud)
该文件位于该位置.但是mysql会抛出以下错误. ERROR 29(HY000):找不到文件'/home/bharathi/out.txt'(错误代码:13)
show variables like 'data%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
Data Dir指向root权限文件夹.我无法更改此变量,因为它是只读的.
如何进行加载数据infile操作?
我尝试更改文件权限,加载本地infile数据.它不会工作.
egg*_*yal 11
如LOAD DATA INFILE语法下所述:
出于安全原因,在读取位于服务器上的文本文件时,文件必须驻留在数据库目录中或者所有人都可读.此外,要
LOAD DATA INFILE在服务器文件上使用,您必须具有该FILE权限.请参见第6.2.1节"MySQL提供的权限".对于非LOCAL加载操作,如果secure_file_priv系统变量设置为非空目录名,则要加载的文件必须位于该目录中.
因此,您应该:
确保您的MySQL用户具有该FILE权限,并假设secure_file_priv未设置系统变量:
让所有人都可读的文件; 要么
将文件移动到数据库目录中.
或者,使用LOCAL关键字将客户端读取的文件传输到服务器.但请注意:
LOCAL仅当您的服务器和客户端都已配置为允许它时才有效.例如,如果mysqld启动--local-infile=0,LOCAL则不起作用.请参见第6.1.6节"安全问题LOAD DATA LOCAL".
真正对我有用的解决方案是:
sudo chown mysql:mysql /path/to/the/file/to/be/read.csv
Run Code Online (Sandbox Code Playgroud)
添加它以供将来参考.
| 归档时间: |
|
| 查看次数: |
10635 次 |
| 最近记录: |