Emacs SQL Mode 介绍
文章目录
1 摘要
工作中经常需要链接数据库,通过配置 Emacs SQL mode,既可以获得一个 SQL的编辑器,也可以把 Emacs 当作一个数据库客户端,灵活的将任意 SQL 语句发送给数据库服务器执行并得到结果。本文汇总 Emacs SQL 的相关配置和基本使用。
2 SQLi Mode
SQLi mode 是一个交互式 SQL 模块 - 是对 SQL 数据库客户端的封装。该模块内置于 Emacs 发行版中,可以和很多 SQL 客户端一起工作。
- psql by PostgreSQL
- mysql by MySQL
- sqlite or sqlite3 for SQLite
- solsql by Solid
- SQL*Plus by Oracle
- dbaccess by Informix
- isql by SyBase
- sql by Ingres
- osql by MS SQL Server
- isql by Interbase
- db2 by DB2 (IBM)
- inl by RELEX
2.1 配置
建议使用大牛 purcell 的 SQL 配置 (我就是这么做的)。
2.2 基本使用
2.2.1 链接数据库
以 MySQL 为例。
- 执行
M-x sql-mysql
命令进入交互式提示,根据提示输入相应的用户、密码、数据库等信息,以建立到数据库的链接。 - 可以执行
M-x sql-save-connection
保存链接信息(默认保存至 custom.el)。
2.2.2 关联 SQLi Buffer
- 在当前
.sql
文件中(SQL mode),通过M-x sql-set-product
命令指定当前缓冲区使用何种 SQL 方言。默认使用SQL(ANSI)
。 - 通过运行
M-x sql-set-sqli-buffer
选择要关联的 SQLi buffer,随后可以将任意 SQL 脚本送至该 SQLi buffer 执行。
2.2.3 执行 SQL
在 .sql
文件中,使用如下快捷键发送 SQL 至 SQLi buffer 以执行 SQL。
key | 命令 | 说明 |
---|---|---|
C-c C-c | sql-send-paragraph | 发送段落 (前后空行为一个段落) |
C-c C-r | sql-send-region | 发送选择区域 |
C-c C-b | sql-send-buffer | 发送整个 buffer |
C-c C-s | sql-send-string | 发送字符串 |
2.2.4 调整 SQLi Buffer 显示
SQLi buffer 默认显示会导致很多列的显示折行,可以运行 M-x toggle-truncate-lines
调整显示模式。
3 Org SQL
Emacs org 支持 SQL 代码块。通过命令 C-c C-c
即可执行 SQL 代码块并显示相应的结果。
3.1 SQL 代码块示例
|
|
3.2 通过 Header 参数提供链接信息
通过定义 header 参数提供数据库链接信息,该方法仅适用于特定的 SQL 代码块。
|
|
3.3 通过 PROPERTIES 提供链接信息
该方法可以在一个 Org 标题 :PROPERTIES:
内加入 header 参数提供链接信息,该方法可以在该 Org 标题下共享链接信息。
|
|
4 参考文献
- Sql Mode - specialized comint.el for SQL interpreters。
- 大牛 purcell 的 SQL 配置 。
- sql.el - sql-mode 代码库。
- SQL Source Code Blocks in Org Mode,
- Setup Emacs as an SQL Database client - Part 1, by Emacs, 2014.
- Literate Database Work, by Howardisms, 2015.
文章作者 Junahan
上次更新 2019-11-10 (dfccfb8)