2015-07-20 88 views
1

当我在本地主机上以root用户身份使用此命令时,它运行时没有问题,但我似乎无法找到实际的文件。MySQL(5.6)“select * into outfile ..”not creating files

SELECT * INTO OUTFILE 'C:\...\tableName.txt' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
FROM tableName; 

当我试图再次运行查询时,它说该文件已经创建,即使它显然不是。

编辑:固定我的查询语法

+1

MySQL服务器是否在具有该位置权限的用户帐户下运行? – Uueerdo

+0

@Uueerdo是的,我有权访问该位置,问题是我没有正确地查看数据目录 – TCulos

回答

1

还有就是你*后不必要的FROM。您的查询应该看起来更像是这样的:

SELECT * INTO OUTFILE 'C:\...\tableName.txt' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\r\n' 
FROM tableName; 

注:确保MySQL已经写权限'C:\...\tableName.txt'

至于该文件已经被创建的错误:

该文件可能已被创建在mysql实际上有权写入的另一个目录中,如数据目录。这就是为什么您收到消息说您已经多次运行该查询,该文件已被创建。

从MySQL命令行运行show variables like '%dirdata%';,你应该看到的输出,看起来是这样的:在Windows

mysql> show variables like '%datadir%'; 
+---------------+-------------------------------------+ 
| Variable_name | Value        | 
+---------------+-------------------------------------+ 
| datadir  | c:\wamp\bin\mysql\mysql5.6.17\data\ | 
+---------------+-------------------------------------+ 
1 row in set (0.35 sec) 

导航到该文件夹​​,你应该在那里找到你的文件。

1
SELECT r INTO OUTFILE 'c:\dev\myA2.txt' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    FROM a2; 

-- leads me to believe it works first time with rowcount output 
-- but it does not put file in dev 
-- run it again it says error 1086: File 'c:devmyA2.txt' already exists 

so that means it wrote it to c: 

the default of what mysql query engine has for c: at that time 

I did not hunt for it ! 

the following works great (note the double slashes \\): 

SELECT r INTO OUTFILE 'c:\\dev\\drew_so_answers\\myA2.txt' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    FROM a2; 
相关问题