用于导出的INTO OUTFILE查询不适用于本地驱动器

时间:2015-02-14 14:35:09

标签: mysql csv mysql-workbench

使用: MySQL Workbench

我正在尝试写入我的MySQL查询以使用当前日期(orders_20150214.csv)自动保存文件,但即使是基本保存(没有日期)也无法正常工作,我一直拒绝服务器。< / p>

代码:

USE `databasename`;
Select   -- complex query from multiple tables -- 
-- Get Order data --

INTO OUTFILE 'E:\My Documents\2014-2015 Accs\ccccc\orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'

错误:

Error Code: 1045. Access denied for user 'dddddd'@'%.dddddddd' (using password: YES)  

我也尝试了以上

的多种变体
USE `databasename`;
Select   -- complex query from multiple tables -- 
-- Get Order data --
FROM table_name  -- multiple tables --
INTO OUTFILE 'E:\My Documents\2014-2015 Accs\ccccc\orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'  

我知道MySQL Workbench有一个内置的&#34;另存为&#34;我使用它,但有几天我想运行查询,它自动保存。我有一个从.csv文件中检索数据并编译成正在运行的订单簿的宏,我想进一步自动化它。

我也尝试过:

INTO OUTFILE 'E:\\My Documents\\2014-2015 Accs\\dddd\\orders.csv'
INTO OUTFILE 'E:/My Documents/2014-2015 Accs/dddd/orders.csv'
-- http://dev.mysql.com/doc/refman/5.1/en/select-into.html

我已经阅读了有关是否可以通过编程方式保存在本地计算机上的混合消息。因此,可能无法直接通过MySQL Workbench。

请帮助:)

2 个答案:

答案 0 :(得分:2)

我很确定您收到1045错误,因为您的用户帐户需要在MySQL服务器中被授予FILE权限才能尝试INTO OUTFILE操作。

您或您友好的本地管理员可以使用此类查询执行此操作。

GRANT FILE  ON *.* TO 'user'@'host';

Gordon提到的东西仍然是正确的:MySQL服务器会将输出文件写入自己的文件系统,它写的文件将由它拥有。你需要复制它。

如果您使用的是Windows系统,则可以尝试使用%TEMP%环境变量展开的路径...例如

INTO OUTFILE 'C:\\Users\\MrsAdmin\\AppData\\Local\\Temp\\orders.csv'

在* nix系统上,

INTO OUTFILE '/tmp/orders.csv'

会做同样的事情。然后,您可以将文件复制到您需要的任何位置。

答案 1 :(得分:1)

请记住,您的MySQL服务器通常在不同于个人帐户的帐户下运行(在Windows上通常是“网络服务”)。此帐户没有“普通”文件夹的写入权限。您只需创建一个导出文件夹,并添加“Users”,并对其ACL进行读/写访问。这将允许服务器在那里写文件。