繁体   English   中英

LOAD DATA INFILE目录结构

[英]LOAD DATA INFILE Directory Structure

我一直在搜寻互联网,试图解决这个问题已有好几个小时,最后还是屈服了,决定直接寻求帮助。

我正在运行linux专用服务器,需要通过运行从主机上php页面执行的mysql查询将数据加载到mysql数据库中。

我遇到的问题是我不知道要真正找到我的文件并将其上传需要什么样的目录结构。 我在下面举一个例子。

LOAD DATA INFILE 'WHAT IN THE WORLD GOES HERE TO MAKE THIS WORK?' 
INTO TABLE customers

每次尝试运行此命令时返回的错误是

Error Code: 1045. Access denied for user

我已经检查了权限,并且用户对相应的数据库具有完全权限。 从我自己的研究中,我发现它可以由于一些原因引发此错误,其中一个原因是它找不到我要上传的文件。

进入public_html文件夹后,我的文件结构如下:

reports/uploads/fileName.csv

感谢您的任何帮助! 这让我发疯。 如果我只是完全以错误的方式进行此操作,或者有一种更简单的方法来完成我的工作,那么我也乐于接受这方面的建议。

文档中所述:

  • 如果文件名是绝对路径名,则服务器将使用给定的名称。
  • 如果文件名是具有一个或多个前导组件的相对路径名,则服务器将搜索相对于服务器数据目录的文件。
  • 如果给出的文件名中没有前导组件,则服务器将在默认数据库的数据库目录中查找该文件。

由于MySQL服务器正在读取文件,因此public_html文件夹无关紧要。 如果您的Web服务器和数据库服务器是不同的计算机,并且您尝试从客户端而不是服务器加载文件,则需要使用LOAD DATA LOCAL INFILE来指定该文件。 然后,文件名将相对于客户端应用程序的工作目录进行解释。

一些想法:要在服务器上存在的文件上使用LOAD DATA INFILE,执行加载数据的用户必须具有FILE特权。 INFILE. 如果该文件位于客户端,请使用LOAD DATA INFILE。

这个链接是有用的: http : //dev.mysql.com/doc/refman/5.1/en/load-data.html

通常最好在易于访问的位置(例如/ tmp)中使用文件测试LOAD FILE,以确认特权是否正常。 然后,您可以开始调试对实际文件所在位置的访问问题。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM