使用Excel批量生成SQL语句,用过的人都说好
Posted SQL数据库开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Excel批量生成SQL语句,用过的人都说好相关的知识,希望对你有一定的参考价值。
点击关注公众号,SQL干货及时获取
后台回复:1024,获取海量学习资源
Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成。
今天我们就用这个功能来快速生成SQL语句。
导入Excel数据
Excel的数据有多种方式,这里我们演示用SQL代码导入Excel中的数据。
例如我们想把左边Excel中的数据插入到数据库中,如下图:
写好模板语句
我们可以先写一条插入语句,如下:
INSERT INTO Person VALUES(1,'吕布',25,'男','13500000001')
然后复制这条SQL语句打开Excel,选中表格后的一个单元格,在上方函数位置粘贴刚才的SQL语句并做修改,
="INSERT INTO Person VALUES("&A2&",'"&B2&"',"&C2&",'"&D2&"','"&E2&"')"
注意前面有个= 然后整个SQL用 ""包围住。
生成SQL语句
确认后就可以看到在单元格中会自动生成一条SQL语句。选中单元格下拉,会发现所有的行后面都会生成一条SQL语句。
执行SQL
然后我们直接复制这些SQL语句到数据库的查询窗口执行。
执行完后我们查询Person表里的数据。
这样就完成了Excel快速生成SQL语句的功能。
扩展SQL示例
以上只是一个简单的示例,运用这种方法我们还可以自动生成很多其他的SQL脚本,比如要查询数据库中所有表中的记录数。
当然我们可以使用循环遍历系统中的所有表然后再用循环语句执行指定的语句,如下:
--使用循环语句查询所有表的数量
DECLARE
TNAME VARCHAR2(200);
BEGIN
--获取系统表中的所有表名
FOR X IN (SELECT TABLE_NAME FROM user_tables where table_name like 'HR_TEMPTABLE%')
--开始循环
LOOP
--循环主体部分
TNAME :=X.TABLE_NAME; --赋值
EXECUTE IMMEDIATE 'SELECT '''X.TABLE_NAME'''||',COUNT(1) Num FROM '||X.TABLE_NAME; --执行循环主体
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(TNAME);
RAISE;
END;
END;
套用Excel生成SQL方法
但是如果是新手同学,不会写上面的代码,而此时又要我们做这样的事怎么办呢?就可以使用上面的方法了。
可以先从系统表中查询出所有的表名
SELECT TABLE_NAME FROM user_tables
将表名复制粘贴到Excel中,然后开始写查询语句,如下图:
然后将这些代码复制粘贴到查询窗口即可查询出所有表中的记录数了。
使用此方法还可以应用在很多类似的场景,他们的共同点就是代码结构一样,但是代码中的参数不一样,对于想快速写出相应的SQL代码是非常有效的。
觉得不错,欢迎转发分享给更多人~
我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
——End——
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读
如何使用Swagger-UI在线生成漂亮的接口文档
一、简单介绍
Swagger是一个实现了OpenAPI(OpenAPI Specification)规范的工具集。OpenAPI是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程。
swagger大大方便了前后端开发人员,用过的人都说好。但是也有一些人并未体验过swagger,还在苦苦的手写接口文档,麻烦又不规范;还有一些人虽然用过,但是只是朦朦胧胧,看别人怎么用直接就CV过来用了,使用的很碎片,不系统。我之前就是这个样子,只知道添加个依赖,启动项目后访问:localhost:8080/swagger-ui.html,就能看到生成的文档了,很是简单。
一次我看到生成的文档上总是多出来一个basic-error-controller,强迫症犯了,就想要把它弄掉,于是顺便看了下swagger的配置,在这里记录一下。
看官方的说明:
Swagger包含的工具集:
- Swagger编辑器: Swagger Editor允许您在浏览器中编辑YAML中的OpenAPI规范并实时预览文档。
- Swagger UI: Swagger UI是HTML,Javascript和CSS资产的集合,可以从符合OAS标准的API动态生成漂亮的文档。
- Swagger Codegen:允许根据OpenAPI规范自动生成API客户端库(SDK生成),服务器存根和文档。
- Swagger Parser:用于解析来自Java的OpenAPI定义的独立库
- Swagger Core:与Java相关的库,用于创建,使用和使用OpenAPI定义
- Swagger Inspector(免费): API测试工具,可让您验证您的API并从现有API生成OpenAPI定义
- SwaggerHub(免费和商业): API设计和文档,为使用OpenAPI的团队构建。
二、入门案例
SpringBoot已经集成了Swagger,使用简单注解即可生成swagger的API文档。
1.引入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.编写配置
@Configuration
@EnableSwagger2 // Swagger的开关,表示已经启用Swagger
public class SwaggerConfig {
@Bean
public Docket api() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.host("localhost:8081")// 不配的话,默认当前项目端口
.apiInfo(apiInfo())
.pathMapping("/")
.select() // 选择哪些路径和api会生成document
.apis(RequestHandlerSelectors.any())// 对所有api进行监控
// .apis(RequestHandlerSelectors.basePackage("com.hanstrovsky.controller"))// 选择监控的package
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))// 只监控有ApiOperation注解的接口
//不显示错误的接口地址
.paths(Predicates.not(PathSelectors.regex("/error.*")))//错误路径不监控
.paths(PathSelectors.regex("/.*"))// 对根下所有路径进行监控
.build();
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("XXXX项目接口文档")
.contact(new Contact("Hanstrovsky", "www.hanstrovsky.com", "Hanstrovsky@gmail.com"))
.description("这是用Swagger动态生成的接口文档")
.termsOfServiceUrl("NO terms of service")
.license("The Apache License, Version 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.version("1.0")
.build();
}
}
3.启动测试
启动服务,访问:http://localhost:8081/swagger-ui.html
就能看到swagger-ui为我们提供的API页面了:
可以看到我们编写的接口,任意点击一个,即可看到接口的详细信息:
可以看到详细的接口声明,包括:
- 请求方式:
- 请求路径
- 请求参数
- 响应等信息
点击右上角的try it out!
还可以测试接口。
三、常用注解
刚才的文档说明中,是swagge-ui根据接口自动生成,不够详细。如果有需要,可以通过注解自定义接口声明。常用的注解包括:
/**
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
*/
示例:
@PostMapping("/people")
@ApiOperation(value = "保存人员信息")
@ApiResponses({
@ApiResponse(code = 0, message = "保存成功"),
@ApiResponse(code = 1, message = "保存失败")
})
public FrontResult save(
@ApiParam(value = "保存参数", example = "")
@RequestBody People people) {
people.setBirthday(Timestamp.valueOf(LocalDateTime.now()));
return new FrontResult(FrontResult.SUCCEED, "保存成功", peopleDao.save(people));
}
@Data
@ApiModel(description = "人员信息保存请求对象")
public class People {
@ApiModelProperty(value = "人员编号")
private Long id;
@ApiModelProperty(value = "姓名", required = true,position = 1)
private String name;
@ApiModelProperty(value = "性别", required = true,position = 2)
private String sex;
@ApiModelProperty(value = "生日", required = true,position = 3)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp birthday;
}
查看文档:
四、美化一下
如果觉得用起来不太习惯,可以用Swagger-Bootstrap-UI 替换Swagger 默认的UI实现左右菜单风格的Swagger-UI ,让其看起来更清晰明了。
1.添加依赖
<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
2.重启项目
访问 http://localhost:8080/doc.html :
以上是关于使用Excel批量生成SQL语句,用过的人都说好的主要内容,如果未能解决你的问题,请参考以下文章