Где MySQL на OSX по умолчанию записывает файлы?

Я пытаюсь записать некоторые данные из оператора выбора MySQL в файл на Mac под управлением Snow Leopard.

select date_base, fractile_v2, gics, count(gvkey_iid)
from master
where fractile_v2 <= 15 and
      fractile_v2  != 0
group by date_base, gics, fractile_v2
order by date_base, fractile_v2
limit 100000
INTO OUTFILE '/User/my-name/Desktop/gics_v2.csv'
FIELDS TERMINATED BY ',';

К сожалению, это приводит к следующей ошибке:

Код ошибки: 1. Не удается создать / записать в файл '/Users/andrew/Desktop/gics_v2.csv' (код ошибки: 13)

Я предполагаю, что это проблема с разрешениями.

Когда я заменяю полный путь к файлу '/User/my-name/Desktop/gics_v2.csv' с просто gics_v2.csv утверждения, кажется, бегут. Однако я понятия не имею, где файл сохранен, и я не могу найти его.

Кто-нибудь знает? И может кто-нибудь также предложить, как я могу решить начальную ошибку записи? Я использую MySQL от имени пользователя root.

4 ответа

Решение

Это проблема с разрешениями, потому что вы пытаетесь заставить пользователя mysql писать в ваш личный домашний каталог. Попробуйте вместо этого записать в папку, которую вы создаете в / usr / local /, и просто для безопасности вы можете сделать глобальные разрешения на чтение / запись, поскольку это ваш Mac.

Откройте терминал на вашем Mac:

cd / usr / local

Mkdir DbOutput

sudo chmod -R 777 DbOutput

Затем вернитесь к своему коду, но измените путь:

выберите date_base, fractile_v2, gics, count(gvkey_iid)

от мастера

где fractile_v2 <= 15 и

fractile_v2!= 0

сгруппировать по date_base, gics, fractile_v2

упорядочить по date_base, fractile_v2

предел 100000

INTO OUTFILE '/usr/local/DbOutput/gics_v2.csv'

ПОЛЯ, ПРЕКРАЩЕННЫЕ ',';

По умолчанию SELECT ... INTO OUTFILE помещает файлы в каталог, где находятся файлы данных. Так что-то вроде /path/to/datadir/databasename/gics_v2.csv

Он пишет файлы как сервер, а не клиент. Таким образом, он использует не права вашего пользователя, а пользователя, который запускает процесс mysqld (обычно это _mysql на osx).

Вам просто нужно указать путь, по которому этому пользователю разрешено писать.

Я знаю, что вопрос устарел, но, к вашему сведению, на моем Mac OS X 10.10 OUTPUT каталог примерно такой: /usr/local/mysql-5.7.10-osx10.9-x86_64/data/databasename/***.csv,

Я использую Mac OS X Server 10.7.4 и для меня каталог OUTFILE /var/mysql/databasename/

Другие вопросы по тегам