在 Ubuntu 终端中运行带有连接的 MYSQL 选择查询 [关闭]

Posted

技术标签:

【中文标题】在 Ubuntu 终端中运行带有连接的 MYSQL 选择查询 [关闭]【英文标题】:Run MYSQL select query with join in Ubuntu terminal [closed] 【发布时间】:2021-02-06 12:45:55 【问题描述】:

我尝试运行以下查询并将结果保存到文件中。但是我不知道确切的语法,因为我是 mysql 新手。

SELECT b.*,c.* FROM  tableb as b JOIN tablec as c ON c.rootid = b.id WHERE b.status = 2;

我想在 Ubuntu 终端内的 MYSQL shell 上运行此查询。并将结果保存在文件中。有人可以指导确切的语法吗?我在 ubuntu 18.04 终端上使用 MYSQL Ver 14.14 Dist 5.7 版本。谢谢!

更新:我完全尝试了以下查询,但我看到了错误:

mysql -u prod -p -e"SELECT tabler.* , tablec.* FROM tablec JOIN tableo ON tablec.id = tableo.id JOIN tabler ON tableo.id = tabler.id WHERE tabler.status = 4;">/tmp/tbldata;

我看到了这个错误:

您的 sql 语法有错误,请检查相应的手册 到你的mysql服务器版本

有什么帮助吗?

第二次更新我的最终查询如下所示:

SELECT tabler.* , tablec.* INTO OUTFILE '/tmp/data.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM tablec JOIN tableo ON tablec.id = tableo.id JOIN tabler ON tableo.id = tabler.id WHERE tabler.status = 4;

我看到以下错误:

访问被拒绝,您需要(至少一项)文件权限 这个操作

我用过的产品没有权利。如何授予对 csv 文件的写入权限?

【问题讨论】:

【参考方案1】:
mysql -u root -p -e"SELECT b.*,c.* FROM  tableb as b JOIN tablec as c ON c.rootid = b.id WHERE b.status = 2" > /tmp/table_data

注意:使用您的用户名而不是 root

另一种方式,你可以使用它INTO OUTFILE

SELECT b.*,c.* 
FROM  tableb as b 
JOIN tablec as c ON c.rootid = b.id 
WHERE b.status = 2
INTO OUTFILE '/tmp/table_data.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

【讨论】:

我尝试了这个查询,但我不断收到错误。用错误更新了我的问题。请帮忙 您已在查询中包含;。删除它。在>之前和之后保留空间@ 谢谢。现在我看到文件权限错误:拒绝访问,您需要(至少一个)此操作的文件权限。使用我的最新查询编辑问题 获取访问权限试试这个解决方案***.com/questions/6091427/…

以上是关于在 Ubuntu 终端中运行带有连接的 MYSQL 选择查询 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在Ubuntu上使用VSCode编译MySQL Connector/C连接库

ubuntu 安装mysql 重置密码并远程连接

ubuntu终端安装mysql—操作顺序

Linux(Ubuntu)下MySQL的安装与配置[转载+亲测]

怎么连接阿里云服务器ubuntu

我的mysql在终端连接不上怎么办?