5

我正在尝试将 MySQL select 语句中的一些数据写入运行 Snow Leopard 的 Mac 上的文件中。

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这些语句似乎运行了。但是我不知道文件保存在哪里,我找不到它。

有人知道吗?任何人都可以建议我如何解决初始写入错误吗?我以 root 用户身份运行 MySQL。

4

4 回答 4

4

这是一个权限问题,因为您正试图让 mysql 用户写入您的私人主目录。尝试写入您在 /usr/local/ 中创建的文件夹,为了安全起见,您可以设置全局读/写权限,因为它是您的 Mac。

在 Mac 上打开终端:

cd /usr/本地

mkdir 数据库输出

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'

以“,”结尾的字段;

于 2012-07-13T03:11:46.790 回答
2

默认情况下 SELECT ... INTO OUTFILE 将文件放在数据文件所在的目录中。所以像/path/to/datadir/databasename/gics_v2.csv

它将文件作为服务器而不是客户端写入。所以它不是使用您用户的权限,而是使用正在运行 mysqld 进程的用户(通常是 _mysql 在osx上。)

您只需为其提供一个允许该用户写入的路径。

于 2012-07-13T06:11:15.727 回答
1

我知道这个问题已经过时了,但仅供参考,在我的 Mac OS X 10.10 上,OUTPUT目录是这样的:/usr/local/mysql-5.7.10-osx10.9-x86_64/data/databasename/***.csv.

于 2016-06-12T06:24:20.857 回答
0

我正在运行 Mac OS X Server 10.7.4,对我来说,OUTFILE 目录是/var/mysql/databasename/

于 2013-03-07T14:14:00.870 回答