Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Укажите путь, который вы хотите записать, как в:

INTO OUTFILE '/tmp/mydata.csv'

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

Systemd и Linux

Заметка о записи на /tmp в системе Linux под управлением systemd:

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Я выполнил ниже запрос в 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 ',';

Ответ 4

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

select name from users into outfile "name.csv"

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

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

Это, вероятно, местоположение по умолчанию, так как я никогда ничего не менял.

Ответ 5

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

Ответ 6

Вы находите файл в 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

Ответ 7

+1 to @michael-berkowski, и мне нужен был ответ для окон (как он заявил)

MariaDB каталог данных

если быть точным, мой был в папке данных для базы данных с именем "mydatabase"

C:\Program Files\MariaDB 10.3\data\mydatabase