---
title: DataGrip札记：基础
date: 2019-12-10 09:52:05
categories:
- 软件工具
tags:
- jetbrains
---

## 目录

- [简介](#简介)
- [正篇](#正篇)
- [参考链接](#参考链接)
- [结束语](#结束语)

## 简介

DataGrip是面向开发人员的数据库管理环境。它旨在查询，创建和管理数据库。

## 正篇

### **数据库对象**

- `数据源分组`
    >可根据自定义类型对数据源分组，比如数据库供应商。按下F6或从上下文菜单中(右键->Move to Group...)选择移至分组…。  
新建组可使用拖放操作完成，只需将一个数据源拖放到另一个数据源上。如果要将数据源放到现有组中，只需拖放进来。

- `为选定的对象生成SQL文件`
    >可以使用SQL生成器 (Ctrl+Alt+G)(SQL Scripts→SQL Generator…)为数据库对象生成SQL文件，只需点击右窗格的Save按钮即可。 
并提供两种输出布局：每个对象一个文件和每个对象一个文件，且按顺序。

- `快速备份表`
    >可以通过拖放操作将表复制到同一个数据源中，如果您需要在进行任何关键数据操作之前创建表的快速备份，这可能非常方便。

- `修改表结构/表数据`
    >在数据库或SQ脚本中的表名称中按下Ctrl+F6即可对它们进行修改，并提供即时预览功能。要编辑表中的数据，请按下F4查看数据编辑器。

- `编辑源代码`
    >按下Ctrl+B，可以获得过程或函数的DDL语句，并进行Edit操作。  
间距（文本编辑器左侧的垂直条)将高亮显示所做的更改，在点击工具栏上的Submit后，对话框将显示生成的SQL代码以更新源代码。  
DataGrip将数据库的源代码保存在本地存储中，您可以查看您已更改的源代码部分，而且可以将任意改动还原到服务器版本。

- `图表`
    >按下Ctrl+Alt+U或通过右键"Diagrams->Show Visualisation"，可以随时在图表中查看它们之间的关系。  
带有主键和外键的列可以从图表中隐藏，只在相关行上显示，如有必要，这些图表可以导出至图像文件。

### **智能文本编辑器**

- `代码格式化`
    >按下Ctrl+Alt+L可以灵活根据用户定义的代码样式，自动完成SQL代码格式化。  
在Settings → Editor → Code Style → SQL中调整代码样式，比如您可以定义关键词是否使用首字母大写。

- `关键字自动大写`
    >可去"Editor->Code Style->SQL"中找到对应的数据库方言，在"Case->Word Case->Keywords"中将值设为To upper。  
如果使用了小写，可以将光标停留在需要转换的字段或表名上，使用Ctrl+shift+U快捷键自动转换。

- `多光标模式`
    >在许多情况下，多个光标是修改SQL代码最有效的方式。要添加多个光标，连续按两次Ctrl并按住不放，然后使用方向键放置新光标。  
或者按住Shift+Alt不放并点击，也有同样效果。 或者先使用文本搜索功能，然后通过Select All Occurrences功能实现。

- `代码注释`
    >选中要注释的代码，按下Ctrl+/或Ctrl+shift+/快捷键，能注释代码，或取消注释。

- `实时模板`
    >按下Ctrl+J即可查看所有实时模板，并根据选择生成相应SQL代码的重复部分。  
每个实时模板都有自己的缩写，只要输入缩写并按下Tab键即可粘贴完整的代码。比如输入selw就可以粘贴SELECT * FROM和WHERE。

- `从剪贴板历史记录粘贴`
    >按下Ctrl+Shift+V可以访问剪贴板历史记录，并快速粘贴最近复制到剪贴板中的项。
当启动应用程序时，DataGrip会开始将复制的项记录到它的剪贴板历史记录中，并且在关闭应用程序时清除历史记录。 

- `管理代码片段`
    >无需为移动代码块执行这么繁琐的复制粘贴操作，您可以直接使用这些热键来管理选定的行或者代码块。  
— 按下Ctrl+D以复制行。  
— 通过Ctrl+Y删除行。  
— 通过Alt+Shift+上下箭头键移动行。

### **运行查询**

- `查询控制台`
    >每个数据源都有自己的默认控制台。进入上下文菜单，然后点击Open Console即可打开。或使用快捷键F4。  
如果出于任何原因，您想为数据源创建另一个控制台，也可以通过：上下文菜单 → New → Console。

- `执行查询`
    >按Ctrl+Enter执行光标停留的语句，可在setting->Database-General中设置smallest statement。  
对于希望在新的tab窗口显示查询结果，可以点击"Pin Tab"按钮，那新查询将不会再当前tab中展示，而是新打开一个tab。

- `评估表达式`
    >在其他基IntelliJ的IDE中，在对象上按Ctrl+Alt+F8或者Alt+Click可以让您获得快速评估。  
在DataGrip中，在查询器中的表中调用它可以查看那个表中的数据，在列名称中按Ctrl+Alt+F8将显示预期结果集中那个列的值。

- `运行查询的历史记录`
    >在每个控制台的工具栏上有一个按钮Browse Console History。按下它可以查看该数据源运行的所有查询的历史记录。

- `完整SQL日志`
    >IDE的所有查询均记录在文本文件中。要打开该文件，请转到Help | Show SQL log in Explorer。

- `执行计划`
    >选中要执行的语句右键"Explain plan(Raw)"将展示数据库要执行的操作，它可以帮助您优化查询。可以以表格或图表的形式表示。 

- `用户参数`
    >当您从其他应用程序中获得SQL查询时，它可以添加参数。参数值用":a"类似符号代替，再点击工具栏的View Parameters按钮。  
您可以在"Database → User Parameters"中找到编辑参数模式的 UI。正则表达式会高亮显示，您可以选择模式有效的方言。

### **处理文件**

- `附加目录`
    >可以在"Files"工具窗口中管理文件和目录，请使用工具栏上的"Attach Directory"按钮将所需目录附加到Files工具窗口中。

- `文件语言`
    >右键选择"Change Dialect"可以更改任何文件(SQL)的语言(方言)，以获得正确的高亮显示和解析建议。

- `版本控制`
    >DataGrip为Git、SVN和Mercurial等所有主要的版本控制系统提供了统一的支持，可以从不同的VCS处理不同项目并随意切换项目。  
要获得VCS支持，可以通过"Settings → Plugins"安装相应的JetBrains插件。  
另请参阅：[如何在DataGrip中处理Git](https://blog.jetbrains.com/datagrip/2018/06/01/tutorial-how-to-use-git-with-datagrip/?_ga=2.177277036.872413008.1576052747-1727377903.1572920689)与[DataGrip和GitHub集成](https://blog.jetbrains.com/datagrip/2018/12/11/datagrip-and-github-step-by-step-integration/?_ga=2.149995903.872413008.1576052747-1727377903.1572920689)。

### **数据编辑器**

- `全文搜索`
    >选择要搜索的数据源或数据源组甚至单独的表，并从上下文菜单调用"Full-text search"或者快捷键"Ctrl+Alt+Shift+F"即可。  
点击结果以打开数据编辑器，如果由于列过多而无法定位数据，请在数据编辑器中使用文本搜索：Ctrl+F。

- `筛选数据`
    >无需输入任何WHERE子句，只要在结果列表上方的"Filter criteria"输入栏中输入搜索条件即可查看您需要的数据。

- `文本搜索`
    >在表编辑器中通过Ctrl+F调用，无需编写语句即可快速在表中查找数据。  
如果您不知道要查找的数据位于哪一列，该功能就特别实用。同时您可以轻松隐藏无关行，以及使用正则表达式。

- `行转列`
    >对于字段比较多的表，查看数据要左右推动，可以切换成列显示，在结果集视图区域使用Ctrl+Q快捷键开启并点击"Transposed View"。
     
### **导入导出选项**

- `从CSV文件导入数据`
    >点击要导入的schema，然后从上下文菜单中选择"Import Data from File..."，然后选择存储数据的CSV文件将看到导入对话框窗口。  
CSV，意为逗号分隔值或者字符分隔值，其文件以纯文本形式存储表格数据，记录间以某种换行符分隔，字段间以逗号或制表符分隔。  
左边的面板显示行分隔符，字段分隔符，空值以及第一行是页眉处理的相关设置。  
右边的面板将看到要创建表的框架和结果数据预览，如果想从已有的表中导入数据，那么请使用该表的上下文菜单并选择从文件导入...。

- `CSV编辑器`
    >DataGrip可以将CSV文件作为表进行编辑并可以即时预览表。在上下文菜单中点击"Edit as Table..."。

- `表数据导出`
    >表可以导出至文件。表的上下文菜单 → 向文件转储数据 (Dump data to file)。  
导出至其他已有表 (Another existing table)。表的上下文菜单 → 将表复制到 (Copy Table to)（或在表上按F5）→ 选择已有表。
导出至任意数据库供应商的任意数据源中的新表。表的上下文菜单 → 将表复制到（或在表上按F5） → 选择目标架构。

- `SQL查询导出`
    >SQL查询可以作为结果导出到文件中。语句的上下文菜单 → 执行到文件 (Execute to file) → 选择格式。  
如果查询比较慢，该功能很实用；如果你导出结果集，查询将再次运行，在这种情况下，您只需要运行一次。

- `结果集导出`
    >结果集可以导出至文件。 转储按钮(Dump Data)  → To File。    
导出至剪贴板。 转储按钮(Dump Data) → 至剪贴板。  
导出至其他已有表。导出按钮(Export to Database...) → 选择已有表。  
导出至任意数据库供应商中任意数据源中的新表。 导出按钮(Export to Database...) → 选择目标架构。

- `导出格式`
    >每次导出到文件或剪贴板时，都需要选择格式。 通常是CSV文件，但在许多情况下，您需要JSON、XML甚至是DML语句。
SQL查询：任何表或结果集都可以用一组INSERT语句展示，请从下拉列表中选择"SQL Inserts"，它还可以选择"SQL Updates"帮您修改数据。 
CSV、TSV：列表中有两个预设格式(逗号分隔值和Tab分隔值)。您可以根据DSV创建任意自定义格式。  
HTML/XML：有一个您无法更改的预设提取工具(HTML表)。此外还有脚本提取工具(HTML-Groovy.html.groovy和XML-Groovy.xml.groovy)等。  
JSON：JSON-Groovy.json.groovy提取工具可以将您的表或结果集导出至JSON。
自定义格式：要处理更加复杂的形式，在提取工具菜单中选择转到脚本目录(Go to Scripts Directory)，导航至它们的存储文件夹。
这些脚本是用Groovy编写的，但也可以用JavaScript编写，而且通常位于Scratches和Consoles/Extensions/Database Tools and SQL/data/extractors中。修改已有提取工具或在这里添加您自己的提取工具。

- `转储/恢复工具`
    >DataGrip集成了mysqldump和pg_dump。要转储对象，请使用上下文菜单中的Dump with...选项。

### **导航**

- `随处搜索`
    >如果不确定在哪里查找所需内容，可尝试按两次Shift键来调用Search Everywhere。
查找操作：Ctrl+Shift+A，切换到Actions。搜索某些你知道但不知道如何访问的功能。  
查找表/过程：Ctrl+N，切换到Tables。如果是表，会打开一个数据编辑器，要查看该表的DDL，请按DDL按钮。  
查找文件：Shift+Ctrl+N，切换到Files。文件会打开。  
查找符号：Shift+Ctrl+Alt+N，切换到Symbols。可以访问数据库视图中的任何数据库对象，包括列、约束、索引等。

- `从SQL导航`
    >在SQL的编辑区域，针对SQL的关键字例如表名、字段名或者函数名上可做如下操作进行相关导航。  
Edit source(F4)可将您转至数据或DDL。Go to declaration(Ctrl+B)可将您转至数据库树。Ctrl+Q悬浮查看表结构。
可去"Setting->Database->General->Navigation"定义导航位置的选项。 

- `在数据库树视图中快速搜索`
    >任何树（列表、弹出窗口、下拉菜单）都支持快速搜索。请注意匹配的数据库对象只有在其节点已打开时才会高亮显示。  
关于快速搜索的另一个实用之处在于其支持缩写。例如使用“sbs”就可以找到“sales_by_store”。

- `最近的文件`
    >按下Ctrl+E打开Recent Files窗口。控制台、数据编辑器、文本文件一切都在这里，光标默认放在最后访问的项目。

- `最近的位置`
    >按下Ctrl+Shift+E打开Recent Locations窗口。列出您最近访问/改变的代码位置。它以代码段的形式显示代码位置前后几行。


## 参考链接

- <https://www.jetbrains.com/zh-cn/datagrip/features>

## 结束语

- 未完待续...
