用SQL Workbench/J批量生成DDL和Insert脚本

最近项目上用到Amazon的Redshift数据库, 由于没有官方客户端,于是去网上找通用SQL客户端,发现一个叫SQL Workbench/J的免费产品,试用了一下,发现功能还挺强大,特此记录几个我目前比较关注的功能:

数据库连接

用JDBC连接数据库,支持大多数支持JDBC驱动的数据库,包括Hive,见这个例子
用SQL Workbench/J批量生成DDL和Insert脚本_第1张图片

连接数据库需要对应的JDBC驱动包(jar文件,一般对应的数据库官网均可下载)

生成DDL脚本

除了可以在图形界面,通过选中单个或多个对象(不限于Table、View等),右键Show Source外(见下图),还可以用命令行以更灵活的方式生成DDL。
用SQL Workbench/J批量生成DDL和Insert脚本_第2张图片
命令生成DDL一例:
运行安装目录下的 sqlwbconsole64.exe,弹出命令行窗口,然后运行
wbconnect profilename (请将profilename替换为实际名称)进行连接,连接成功后贴/键入如下命令,或直接在GUI编辑界面中输入

WbGenerateScript 
	-objects = Department,Employee,JobCandidate
	-schemas = HumanResources
	-types = Table
	-file = 'D:\Users\Documents\Temp\DDL-SQL.sql'
	-includeDrop
	-includeForeignKeys = false
	-encoding = UTF-8
	-includeTableGrants = false
	-useSeparator = true;

即可生成上述3个表的CREATE脚本,生成脚本命令的参数说明见此链接

生成Insert脚本

同样可以在图形界面右键Export Data,然后选择生成SQL脚本的方式,如下图:
用SQL Workbench/J批量生成DDL和Insert脚本_第3张图片
下面介绍用命令行以更灵活的方式生成Insert脚本的方式:

-- 生成Insert 脚本,某个架构的多个表
WbExport
	-type = sqlInsert
	-types = Table
	-schema = Person 
	-useSchema = true
	-sourceTable = ContactType,AddressType
	-outputDir = D:\Users\Documents\Temp
	-encoding = UTF-8;

-- 生成Insert 脚本,某个架构除某些表之外的所有表
WbExport
	-type = sqlInsert
	-types = Table
	-schema = Person 
	-useSchema = true
	-sourceTable= *
	-excludeTables = Address, BusinessEntity
	-outputDir = D:\Users\Documents\Temp
-encoding = UTF-8;

生成的脚本形式是每个Table一个文件,完整的导出数据命令行参数说明见此链接

  • 生成Insert脚本的速度还是偏慢,建议多个表但数据均不是很多的场景下使用
  • 上述脚本也可不使用命令行模式,直接在GUI查询界面运行

Insert语句字段对应提示

若Insert目标表字段太多,字段容易错位(特别是事后对比时),此软件可以设快捷建出现字段对应的提示:
用SQL Workbench/J批量生成DDL和Insert脚本_第4张图片
另外,在新定Insert语句时,除上述方式,也可事先生成Insert字段模板,再逐一替换:
用SQL Workbench/J批量生成DDL和Insert脚本_第5张图片

其它说明

  • SQL WorkBench作为开源的免费的产品,在跨平台和跨数据库方面已经做很好了
  • 如果对某种数据库,如MSSQL非常熟悉,当然还是推荐用SSMS来管理和运行SQL,但对于日常要接触多种数据库的开发者(非DBA)来说,不可能每个官方或流行的SQL Client(比如Toad 、PL/SQL Developer之于ORACLE,SSMS之于MSSQL,MYSQL Workbench等等)都去学习深入研究一遍,此时像SQL WorkBench这样的软件就体现出了优势
  • 当然如果不缺钱或电脑配置非常高,不在乎软件吃太多内存和有太多花哨的功能,可以用商业软件,比如Navicat和DataGrip
  • 另外有个更加小巧的客户端SQLDbx,有个免费版可以和此软件配合一起使用

你可能感兴趣的:(Other,ETL/BI/大数据)