【问题标题】:MySql result to csvMySql 结果到 csv
【发布时间】:2016-07-25 10:14:55
【问题描述】:

我正在尝试将 mysql 查询保存到 csv。我已经搜索并找到了各种选项。这个选项看起来不错,干净的代码,但不起作用

我收到一个错误

1045 - 用户 'user'@'localhost' 的访问被拒绝(使用密码:YES)

SELECT *
FROM clients
INTO OUTFILE 'mytest.csv'

当我删除 INTO OUTFILE 'mytest.csv' 时,它工作正常

(简化的SQL代码)

【问题讨论】:

  • 可能添加类似 'c:/.../mytest.txt' 的内容?
  • @MarcElBichon。感谢您的评论。还是一样的错误

标签: php mysql csv


【解决方案1】:

这是localhost中“unidimec”的权限错误。检查“unidimec”的用户权限并从mysql root用户授予权限。

【讨论】:

  • 用户拥有完全权限
  • 在 * 上授予所有特权。 * TO 'uniimec'@'localhost';然后给 FLUSH PRIVILEGES;
【解决方案2】:

语法是

SELECT Your_Column_Name
    FROM Your_Table_Name
    INTO OUTFILE 'Filename.csv'
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'

【讨论】:

    【解决方案3】:

    我认为您必须授予 mysql 用户生成文件的权限。

    使用 SSH 登录(如果您有专用服务器,否则您必须联系您的虚拟主机支持)

    通过以下命令在mysql中以root身份登录

    mysql -u root -p[password]
    

    登录mysql界面后授予该用户文件权限

    GRANT FILE ON *.* TO 'unidimec'@'localhost';
    

    【讨论】:

      【解决方案4】:

      仔细阅读“INTO OUTFILE”的文档:

      SELECT ... INTO OUTFILE 语句的主要目的是让您非常快速地将表转储到服务器计算机上的文本文件中。如果您想在服务器主机以外的其他主机上创建结果文件,通常不能使用 SELECT ... INTO OUTFILE,因为无法写入相对于服务器主机文件系统的文件路径。

      但是,如果远程机器上安装了 MySQL 客户端软件,则可以改为使用 mysql -e "SELECT ..." > file_name 等客户端命令在客户端主机上生成文件。

      如果可以使用服务器文件系统上的网络映射路径访问远程主机上的文件位置,也可以在服务器主机以外的其他主机上创建结果文件。在这种情况下,目标主机上不需要存在 mysql(或其他一些 MySQL 客户端程序)。

      http://dev.mysql.com/doc/refman/5.7/en/select-into.html

      【讨论】:

        猜你喜欢
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 2014-02-20
        • 1970-01-01
        • 2018-02-04
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多