【发布时间】:2014-08-11 08:59:41
【问题描述】:
我在 mysql 中有一个表,现在我正在尝试将整个数据导出到一个 csv 文件中。根据文档,一种可能的方法是使用查询:
SELECT id, name, email INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ‘\\’
LINES TERMINATED BY '\n'
FROM users WHERE 1
这工作得很好,但它会在我的文件系统的tmp 目录中创建文件。我希望该文件位于我的 Eclipse 工作区的项目目录中(我正在使用 java)。
接下来,我尝试将此文件复制到我的目的地(使用 apache commons io),然后删除该文件。但我无法删除文件(“java.io.IOException:无法删除文件:”,我假设这是因为我没有 tmp 目录的 root 访问权限)。
有没有其他优雅的方法来做我想做的事……还是我必须使用像 apache POI 这样的库?
【问题讨论】:
-
尝试以 sudo 运行程序,或更改您的输出文件路径
-
@gtgaxiola 更改 outfilepath 不起作用,因为“INTO OUTFILE”仅在托管我的 mysql 服务器的位置创建文件。无论如何,我正在寻找更优雅的解决方案(对不起,但我不想使用 sudo)
-
你有 mysql 服务器的管理员权限吗?您可以为您的程序创建一个具有适当 chmod 权限的目录吗?然后你可以改变outfile路径
-
@gtgaxiola 我的 mysql 服务器有一个单独的用户名和密码,如果我以 root 身份登录,我可以在 chmod 中创建一个目录,如果这就是你的意思
-
在您的 Mysql 服务器中,如果有一种方法可以创建一个目录来放置具有更宽松 chmod 权限的 csv 文件(例如允许从特定用户/组中删除),那么您可以更改您的MySQL 脚本指向该目录而不是 /tmp/
标签: java mysql excel csv ubuntu