2015-07-20 3 views
1

Когда я использую эту команду на своем локальном хосте в качестве пользователя root, он запускается без проблем, но я не могу найти фактический файл.MySQL (5.6) «выберите * в outfile ..», не создавая файлы

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

Когда я пытаюсь выполнить запрос еще раз, он говорит, что файл уже создан, даже если это явно не так.

EDIT: фиксированный мой синтаксис запроса

+1

Является ли сервер MySQL запущенным под учетной записью пользователя, имеющей разрешения для местоположения? – Uueerdo

+0

@Uueerdo yes У меня был доступ к местоположению, проблема была в том, что я не искал соответствующий каталог данных – 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%';, вы должны увидеть, что выглядит примерно так:

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

Navigate в окна к этой папке, и вы должны найти файл там.

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;