从数据库表输出csv文件

时间:2014-10-22 15:12:06

标签: php mysql csv

我想在csv文件中输出表数据。

$query = new QUERY();
$clause = "SELECT * FROM $table WHERE company_id='$company_id'
           INTO OUTFILE 'file_name.csv'
           FIELDS ENCLOSED BY '\"' TERMINATED BY ';' ESCAPED BY '\"'
           LINES TERMINATED BY '\r\n'";
$query->run($clause);

错误:

exception 'PDOException' with message 'SQLSTATE[28000]:
Invalid authorization specification: 1045 Access denied for user
'my_username'@'%' (using password: YES)' in
D:\home\site\wwwroot\application\libraries\query.php:426

这有什么问题?如何在csv文件中导入数据并将其放在服务器上?

修改

Stack trace:
#0 D:\home\site\wwwroot\application\libraries\query.php(426): PDOStatement->execute(Array)
#1 D:\home\site\wwwroot\application\libraries\query.php(470): QUERY->RUN_QUERY('SELECT * FROM a...', Array)
#2 D:\home\site\wwwroot\application\controllers\manage_clients.php(116): QUERY->run('SELECT * FROM a...')
#3 [internal function]: Manage_clients->delete_company()
#4 D:\home\site\wwwroot\system\core\CodeIgniter.php(359): call_user_func_array(Array, Array)
#5 D:\home\site\wwwroot\index.php(203): require_once('D:\\home\\site\\ww...')
#6 {main}

2 个答案:

答案 0 :(得分:0)

显然,

Invalid authorization, Access denied for user 'my_username'@'%'

请检查您的凭据,即您的usernam和pwd是否匹配,以及是否从您使用的IP接受这两种凭据。

编辑:如果所有其他查询运行正常,也许它们来自其他来源,如另一台服务器?我想到的一件事是,您可能没有权限编写outfile本身 - 但我想知道是否会有另一条错误消息。也许您的用户无权使用OUTFILE命令?

答案 1 :(得分:0)

确保您的用户拥有正确的权限。运行这些查询以设置权限,然后运行第二个查询以向用户授予文件。授予所有权限不会提供文件,因此您需要单独执行此操作。

grant all privileges on your_database.*  to 'asdfsdf'@'localhost'  identified by 'your_password';
flush privileges;
grant file on *.* to 'asdfsdf'@'localhost';

您可以运行show grants;以查看已授予用户的内容。

另一种方法是:

service mysql restart --skip-networking --skip-grant-tables
mysql <enter>
update mysql.user set File_priv = 'Y' where user='gs' and host='localhost';
exit
service mysql restart