Не удается найти файл, созданный outfile в MySQL

Я использую следующий запрос для создания файла CSV

SELECT email INTO OUTFILE "mydata.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n" FROM users; 

Но я не могу найти файл mydata.csv в любом месте, когда я просматриваю файл.

Любая идея, где этот файл хранится?

Запрос выполняется без ошибок! Любая помощь?

MySQL может записывать файл в свой собственный каталог данных, например, /var/lib/mysql/<databasename> . Чтобы указать путь, используйте полный путь.

Однако он должен быть каталогом, доступным для записи из учетной записи пользователя, на которой запущен демон сервера MySQL. По этой причине я часто использую /tmp :

Укажите путь, который вы хотите записать, следующим образом:

 INTO OUTFILE '/tmp/mydata.csv' 

Обратите внимание: MySQL будет писать файл на сервере MySQL, а не на клиентской машине. Поэтому удаленные подключения будут создавать выходные файлы на удаленном сервере. См. Также SELECT INTO OUTFILE local? для получения более подробной информации и обходных решений.

Системный и Linux

Заметка о записи в /tmp в системе Linux с системой systemd :

Спустя несколько лет после первоначальной публикации я обнаружил, что не могу найти файл, записанный в /tmp через

 ...INTO OUTFILE '/tmp/outfile.csv' 

на сервере MariaDB 5.5, на котором работает Fedora Linux с системой. Вместо того, чтобы записывать файл непосредственно в /tmp/outfile.csv как указано, этот каталог и файл были созданы под каталогом systemd в /tmp :

 /tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv 

В то время как сам файл outfile.csv и подкаталог tmp/ были созданы для записи в мире, сам каталог службы systemd имеет 700 разрешений и принадлежит root, требуя доступа sudo для извлечения файла внутри него.

Вместо того, чтобы указывать абсолютный путь в MariaDB как /tmp/outfile.csv и указывать его относительно как outfile.csv , файл был написан как ожидалось в каталоге данных MariaDB для текущей выбранной базы данных.

Я подозреваю, что вы ищете файл на своей клиентской машине.

SELECT .. INTO OUTFILE записывает файл на серверный компьютер.

Только для примера:

Я выполнил ниже запрос в MySQL Workbench, и я нашел свой файл в

 SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ','; 

D: \ WAMP \ Bin \ MySQL \ mysql5.6.17 \ Data \ DB \ file.csv

Вы можете использовать приведенный ниже пример, чтобы указать путь к файлу:

 SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ','; 

Я нашел файлы INTO OUTFILE, созданные с помощью следующей команды:

select name from users into outfile "name.csv"

в следующем месте

C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ data \ name.csv

Вероятно, это место по умолчанию, поскольку я никогда ничего не менял.

В случае, если кто-либо из OS X имеет эту проблему, mysql установленный с homebrew, имеет выход по умолчанию, расположенный по адресу /usr/local/var/mysql/database-name/

Вы находите файл в C:\wamp\bin\mysql\mysql5.5.24\data , но имя будет UsersNamecarro.txt если вы дали следующий select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

Так что просто напишите .....OUTFILE 'C:\carro.txt' чтобы получить файл carro.txt в папке с data