3

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

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

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 文件中的数据不包含所包含内容的属性或标题。所以......我对如何将数据排序到正确的列有点困惑。

4

4 回答 4

2

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

  1. 文件权限。让超级用户运行GRANT FILE ON *.* TO 'username'@'%';
  2. local_infile设置为 1 my.cnf。为避免必须重新启动 mysql,请让超级用户运行SET GLOBAL local_infile=1;.

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

于 2013-05-20T18:41:48.230 回答
2

我确保我给了我的 txt 文件权限:chmod 711

然后我用 LOAD DATA LOCAL INFILE 'nyccrash.txt' INTO TABLE nyccrash FIELDS TERMINATED BY ','; 了它,它起作用了。

于 2013-05-21T02:25:41.897 回答
0

如果您要这样做几次,您可以通过将数据导入 Excel 来挂载 sql 查询,并使用 concat 挂载 sql 行,然后复制/粘贴到客户端并执行。对于很多表来说这不是很有用。如果是这样,使用 php 上传 csv 文件并填充表格并不难。

于 2013-05-20T12:59:30.497 回答
0

尝试以下方式:

// Connect to Database
$db_Host = "";
$db_Username = "";
$db_Password = "";
mysql_connect($db_Host,$db_Username,$db_Password) or die("MySQL - Connection Error");
mysql_select_db($db_Database) or die("MySQL - Cannot Select Database");

mysql_query("LOAD DATA LOCAL INFILE '/home/username/public_html/Database.txt' INTO TABLE yourtablename") or die("MySQL - Query Error - " . MySQL_Error());

//MySQL is automatically disconnected from when PHP ends.
于 2013-05-20T18:32:49.800 回答