MySQL(5.6) "выбрать * в выходной файл..." не создает файлы

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

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

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

РЕДАКТИРОВАТЬ: исправлен синтаксис моего запроса

2 ответа

Решение

Есть ненужное 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)

Перейдите в Windows к этой папке, и вы должны найти там свой файл.

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;
Другие вопросы по тегам