1. 问题描述
想导出 Oracle 数据库到单独的 sql 文件中,查看网上很多教程,几乎都是 MySQL 和 PostgreSQL 的导出,上官网查询帮助,找到相关功能。 目前自己找不到能实现单个 sql 文件导出的,只能实现 数据库结构、数据库内容单独生成两份 sql
2. 数据库右键 – 仅对 MySQL 和 PostgreSQL 有效
在 MySQL 和 PostgreSQL 数据库,右键,有 “demp XXX” 相关选项。但这个其实是利用两个数据库官方提供的数据库备份工具 mysqldump 和 pgdump 来实现的,导入需要使用 mysql 和 pgsql 程序来实现。 这里的操作其实是用datagrip快捷调用这两个官方备份工具。 而 Oracle 没有类似的工具,因此不能直接右键导出 因此,如果系统没装 mysqldump / pgdump,就没法使用这两种功能来导出 mysql / postgresql 数据库了
1. MySQL 备份 – mysqldump
参考网址:http://t.csdn.cn/ktZi9
2. PostgreSQL 备份 – pgdump
参考网址:http://t.csdn.cn/7Wm3Q
3. Oracle备份/导出
其他数据库导出相对来说比较麻烦,需要分开导出:
- 导出数据库结构和定义 – 使用 SQL generator 实现
- 导出对应表 – 选中对应表,右键选中 Import/Export --> Export to files
这里导出到对应表不能集中导出到一份 sql 脚本中,远啦数据库中的每张表都会独立导出一个 sql 文件,里面记录着对应表的数据
1. 数据库定义(结构)的导出 – SQL generator
数据库右键 – SQL Script – SQL generator – SQL generator 从名称可以看出是专门生成 SQL 脚本的工具,这个工具用于生成与表结构有关的部分 SQL 脚本
1. 此工具打开方法
- 选中要导出的数据库,右键
- 在弹出的菜单中选择
SQL Script --> SQL Generator
2. 工具的选项和配置
-
配置选项
- 要生成什么脚本
常用的选项如下:图中有一些翻译不太对,以下面的文字为准
Create script completely 所有内容全部新建 用于数据库备份、将数据库完全导入其他电脑中Definitions provided by RDBMS server 数据库中的所有定义 生成的 sql 脚本只包含定义 (数据库结构,DDL语言),不包含各个表中的数据Truncate table 清空所有表中的内容,但仍保留表Drop object 删除所有定义的东西 (包括视图、存储过程、数据表、函数等) - 常用的选项
use CREATE OR REPLACE syntex 使用 CREATE OR REPLACE 语法。 通常用于生成用于强制修改的脚本,不论原来数据库是否已经存在对应的数据,都全部覆盖重新生成use VARCHAR instead of VARCHAR2 字符串变量使用 VARCHAR 类型而不是 VARCHAR2 类型。 若要考虑导入其他数据库(非Oracle的数据库),可勾选。 两者的区别参考网页:https://www.cnblogs.com/anningkang/p/oracle.htmluse semicolon as staments delimiter 使用分号作为 sql 脚本每个语句的间隔符。 通常勾选,SQL标准中通常以分号作结尾reformat generated code 美化生成的 sql 代码。建议勾选 -
保存选项
- 生成单个 sql 脚本:这个界面不用点开,直接点右边三个按键,中间的就是导出为单个文件,在点击后的弹窗中选导出文件的名、路径、格式即可 (sql 脚本指定格式为 .sql 即可)
- 根据分类导出多个 sql 脚本:左侧设置导出路径、分类导出选项
3. 生成操作
- 配置选项进行如图的配置
- 点击右键弹出保存界面,保持生成的脚本
4. 生成结果
生成结果中包含了
2. 数据库内容的导出
- 选中要导出的数据表
- 在弹出的菜单中,选中
Import/Export --> Export to file - 在弹窗中,输出格式选择
SQL Insert
3. 对比 Navicat
- Navicat 能将 数据库结构 + 数据库内容 全部塞到同一个 sql 脚本中,相比之下 Datagrip 就没有这么方便了,需要分别导出表结构和表数据
- Datagrip 导出的表数据很多,有几张表就导出几个对应的 sql 文件,并且文件总量还远超 Navicat 的单个文件
- 总结:数据库整体导出到 sql 脚本的功能, Datagrip 还有很大不足需要加强
|