Я использую следующий запрос для создания файла 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? для получения более подробной информации и обходных решений.
Заметка о записи в /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