2015-07-20 92 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; 
相關問題