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;