php - 加载文件中的数据给我一个访问被拒绝的权限错误。我还能如何将文本文件导入数据库中的表中?

标签 php mysql mysqli

我想导入一个包含由 , 分隔的数据的文本文件。我阅读了大多数人使用的几个来源,“LOAD DATA INFILE”。所以,我认为它对我也有用。

但是当我这样做时,我得到了这个权限错误。我运行了这个命令,这是我得到的:

LOAD DATA INFILE '/public_html/nyccrash.txt' INTO TABLE nyccrash; 

但它给了我这个错误:

ERROR 1045(28000): Access denied for user 'username'@'%' (using password: YES)

我在其他一些线程上读到,我所要做的就是包含完整的文件路径,我这样做了,但仍然没有用。

是否有另一种方法可以将文本文件导入到我数据库中的表中?使用 SQL 或 PHP。

编辑:

我发现我可以使用这个命令:

<?php
$row = 1;
$handle = fopen("nyccrash.txt", "r");
echo("<table>");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo("<tr>\r\n");
    foreach ($data as $index=>$val) {
        echo("\t<td>$val</td>\r\n");
    }
    echo("</tr>\r\n");
}
echo("</table>");
fclose($handle);

?>

这让我可以读取数据并创建表格并打印出来。在使用上述方法收集数据后,我还可以使用 INSERT INTO table sql 命令,但我不确定如何将值插入表中。也就是说,遍历要插入的值。我在 txt 文件中的数据不包含所包含内容的属性或标题。所以...我对如何将数据排序到正确的列中有点困惑。

最佳答案

为了通过LOAD DATA LOCAL INFILE加载数据,你需要两件事:

  1. FILE privilege .让 super 用户运行 GRANT FILE ON *.* TO 'username'@'%';
  2. 设置local_infilemy.cnf 中为 1。为避免必须重新启动 mysql,让 super 用户运行 SET GLOBAL local_infile=1;

警告:这两件事都将被视为安全漏洞。

关于php - 加载文件中的数据给我一个访问被拒绝的权限错误。我还能如何将文本文件导入数据库中的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649966/

相关文章:

sql - 从 2 个表中计算高分排名

php - $mysqli->fetch_object($result) 不工作

php - JavaScript:If 子句部分执行

php - 使用 “aggs”在Elasticsearch中使用GROUP BY,不适用于PHP

php - 如何修复 HTML 文档的字符编码未声明

mysql - 如何在 MySQL 上对 "intercalary"行进行排序

PHP mysqli 只显示一个用户

PHP Mysqli 显示计数总和的结果

php - 调用非对象的成员函数 InnerJoin()

php - 在居中的弹出窗口中打开表单提交的消息