mysql - 我可以从 Vim 视觉选择执行 MySQL 查询并在新缓冲区中输出

标签 mysql linux vim

给定一个由多行 MySQL 查询组成的文件,例如

SELECT foo, bar, etc
FROM blah
WHERE something or other
LIMIT etc

有什么方法可以让我在 Vim 中直观地选择一个查询,将其通过 MySQL 进行管道传输,然后在新缓冲区中查看查询和结果?

澄清:我不想要表格输出,而是可以在 vim 中进一步处理或导入到电子表格中的东西(比如从 mysql --batch 获得的制表符分隔输出) (Ubuntu Linux)。

最佳答案

Dbext plugin支持这种行为。

可视化选择SQL语句,运行:DBExecRangeSQL来执行。

结果将返回到当前视口(viewport)底部的新拆分中。

控制输出窗口的选项有很多。请参阅 :help dbext 了解详细信息。

dbext example output

2012 年 5 月 1 日更新

该插件的 15.0 版已发布,内置了此功能。

可以覆盖默认的 -t 标志

默认设置:

let g:dbext_default_MYSQL_extra = '-t'

覆盖批量设置

let g:dbext_default_MYSQL_extra = '--batch --raw'

Dbext 将 -t 选项硬编码到 MySQL,但如果该行从 dbext.vim 中删除,在 DB_MYSQL_execSql(我当前版本)的第 2278 行,您可以通过--batch 和 --raw 选项:

:DBSetOption MYSQL_cmd_options='--batch --raw'

恢复表格输出:

:DBSetOption MYSQL_cmd_options='-t'

我在我的安装上成功地测试了这个。

关于mysql - 我可以从 Vim 视觉选择执行 MySQL 查询并在新缓冲区中输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125138/

相关文章:

linux - Gnuplot 4.6 xtics 标签消失

linux - 使用 perf 了解内存压力

vim 删除向后技巧

vim - VIM:查找和替换单词的前N个出现

MySQL:抓取在另一个表中找不到 ID 的行

mysql - 如何使用触发器拆分数据并将其传输到另一个表

c++ - 特定目标文件的单线程构建

list - 枚举Vim中的现有文本(从现有文本中编号列表)

mysql - 在多个 MySQL 表中搜索查询

mysql - 如何确定谁正在尝试访问 MySql