从数据库表输出csv文件


Output csv file from database table

我想在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}

显然,

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

因此,请检查您的凭据,即您的usernam和pwd是否匹配,以及您使用的IP是否接受了两者。

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

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

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