最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot服務(wù)實(shí)現(xiàn)執(zhí)行SQL腳本文件

 更新時(shí)間:2024年08月19日 10:30:46   作者:一棵星  
這篇文章主要介紹了Springboot服務(wù)實(shí)現(xiàn)執(zhí)行SQL腳本文件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Springboot服務(wù)執(zhí)行SQL腳本文件

當(dāng)sql腳本文件包含不同數(shù)據(jù)庫實(shí)例sql時(shí),遍歷讀取sql文件再插入時(shí),由于是不同的數(shù)據(jù)庫實(shí)例這種方式就不行了,這時(shí)就需要程序直接執(zhí)行sql腳本。

Java程序執(zhí)行sql文件時(shí)注意:

  • 1.當(dāng)sql文件包含不同的數(shù)據(jù)庫實(shí)例時(shí),在sql腳本末尾要切回該服務(wù)所使用的數(shù)據(jù)庫;如:use db1; … use db2; 該服務(wù)使用db1數(shù)據(jù)庫,要末尾追加 use db1;
  • 2.在sql文件結(jié)尾要加 'commit;'指令。

springboot執(zhí)行sql腳本

/**
 * 執(zhí)行sql腳本
 * @throws SQLException
 */
private void executeSqlScript(String path) throws IOException {
    ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
    resourceDatabasePopulator.addScript(new ClassPathResource(path));
    // resourceDatabasePopulator.addScript(new FileSystemResource(path));
    resourceDatabasePopulator.execute(dataSource);
}

注意:文件需要在class path下

本文將文件放入到 src/main/resources/目錄下,如下圖:

當(dāng)服務(wù)運(yùn)行時(shí),時(shí)正常時(shí)報(bào)錯(cuò),報(bào)錯(cuò)信息如下:Caused by: java.io.FileNotFoundException.

詳細(xì)報(bào)錯(cuò)信息如下:

2024-07-19 13:20:24.360  INFO 19320 --- [nio-8000-exec-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-07-19 13:20:24.566  INFO 19320 --- [nio-8000-exec-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2024-07-19 13:20:24.577 ERROR 19320 --- [nio-8000-exec-1] a.o.e.h.GlobalControllerExceptionHandler : Cannot read SQL script from class path resource [TOo7PxuIIiRtAb7o0djJWEwYyEeL1TIJ90af0l4wZtWj6XPlOh4ARP7HNE91PKvp.sql]; nested exception is java.io.FileNotFoundException: class path resource [TOo7PxuIIiRtAb7o0djJWEwYyEeL1TIJ90af0l4wZtWj6XPlOh4ARP7HNE91PKvp.sql] cannot be opened because it does not exist

org.springframework.jdbc.datasource.init.CannotReadScriptException: Cannot read SQL script from class path resource [TOo7PxuIIiRtAb7o0djJWEwYyEeL1TIJ90af0l4wZtWj6XPlOh4ARP7HNE91PKvp.sql]; nested exception is java.io.FileNotFoundException: class path resource [TOo7PxuIIiRtAb7o0djJWEwYyEeL1TIJ90af0l4wZtWj6XPlOh4ARP7HNE91PKvp.sql] cannot be opened because it does not exist
    at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:239) ~[spring-jdbc-5.3.24.jar:5.3.24]
    at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:254) ~[spring-jdbc-5.3.24.jar:5.3.24]
    at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:54) ~[spring-jdbc-5.3.24.jar:5.3.24]
    at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.execute(ResourceDatabasePopulator.java:269) ~[spring-jdbc-5.3.24.jar:5.3.24]
    at com.angel.ocean.service.impl.OemAppDataServiceImpl.executeSqlScript(OemAppDataServiceImpl.java:239) ~[classes/:na]
    at com.angel.ocean.service.impl.OemAppDataServiceImpl.importSqlFile(OemAppDataServiceImpl.java:130) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.24.jar:5.3.24]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) ~[spring-aop-5.3.24.jar:5.3.24]
    at com.sun.proxy.$Proxy73.importSqlFile(Unknown Source) ~[na:na]
    at com.angel.ocean.controller.OemAppDataController.importSqlFile(OemAppDataController.java:51) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.24.jar:5.3.24]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.24.jar:5.3.24]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.24.jar:5.3.24]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:696) [tomcat-embed-core-9.0.69.jar:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.24.jar:5.3.24]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) [tomcat-embed-core-9.0.69.jar:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.24.jar:5.3.24]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.24.jar:5.3.24]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.24.jar:5.3.24]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.24.jar:5.3.24]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.24.jar:5.3.24]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.24.jar:5.3.24]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.69.jar:9.0.69]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_221]
Caused by: java.io.FileNotFoundException: class path resource [TOo7PxuIIiRtAb7o0djJWEwYyEeL1TIJ90af0l4wZtWj6XPlOh4ARP7HNE91PKvp.sql] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:199) ~[spring-core-5.3.24.jar:5.3.24]
    at org.springframework.core.io.support.EncodedResource.getReader(EncodedResource.java:146) ~[spring-core-5.3.24.jar:5.3.24]
    at org.springframework.jdbc.datasource.init.ScriptUtils.readScript(ScriptUtils.java:328) ~[spring-jdbc-5.3.24.jar:5.3.24]
    at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:236) ~[spring-jdbc-5.3.24.jar:5.3.24]
    ... 63 common frames omitted

如何解決上述報(bào)錯(cuò)呢?

不使用classpath相對路徑

resourceDatabasePopulator.addScript(new ClassPathResource(path))

使用文件系統(tǒng)的絕對路徑:

resourceDatabasePopulator.addScript(new FileSystemResource(path))

如下所示:

/**
 * 執(zhí)行sql腳本
 * @throws SQLException
 */
private void executeSqlScript(String path) throws IOException {
    ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
    // resourceDatabasePopulator.addScript(new ClassPathResource(path));
    resourceDatabasePopulator.addScript(new FileSystemResource(path));
    resourceDatabasePopulator.execute(dataSource);
}

注意:這個(gè)path是系統(tǒng)的絕對路徑

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java替換url的域名和端口方法

    java替換url的域名和端口方法

    下面小編就為大家?guī)硪黄猨ava替換url的域名和端口方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 詳解Springboot2.3集成Spring security 框架(原生集成)

    詳解Springboot2.3集成Spring security 框架(原生集成)

    這篇文章主要介紹了詳解Springboot2.3集成Spring security 框架(原生集成),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java 如何計(jì)算同比增長工具類

    java 如何計(jì)算同比增長工具類

    這篇文章主要介紹了java 如何計(jì)算同比增長工具類的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 從入門到精通一文搞定SpringDoc

    從入門到精通一文搞定SpringDoc

    本文介紹Swagger3.0(OpenAPI3.0)在SpringBoot3中的集成,使用SpringDoc替代已停更的Springfox,涵蓋依賴引入、配置、常用注解如@Tag、@Operation等,以及分組和認(rèn)證授權(quán)的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • JAVA+Struts2獲取服務(wù)器地址的方法

    JAVA+Struts2獲取服務(wù)器地址的方法

    這篇文章主要介紹了JAVA+Struts2獲取服務(wù)器地址的方法,是Struts2的一個(gè)簡單應(yīng)用,具有一定的借鑒與參考價(jià)值,需要的朋友可以參考下
    2014-11-11
  • 詳解springboot測試類注解

    詳解springboot測試類注解

    這篇文章主要介紹了springboot測試類注解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Java鏈?zhǔn)秸{(diào)用實(shí)戰(zhàn)指南(4種實(shí)現(xiàn)方式詳解)

    Java鏈?zhǔn)秸{(diào)用實(shí)戰(zhàn)指南(4種實(shí)現(xiàn)方式詳解)

    本文介紹了Java中的鏈?zhǔn)秸{(diào)用,包括其優(yōu)點(diǎn)和實(shí)現(xiàn)方式,鏈?zhǔn)秸{(diào)用通過對象自身返回,使得代碼更加簡潔、易讀和可組合,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Maven jar包沖突的解決方案

    Maven jar包沖突的解決方案

    這篇文章主要介紹了Maven jar包沖突的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java線程的調(diào)度與優(yōu)先級詳解

    Java線程的調(diào)度與優(yōu)先級詳解

    這篇文章主要為大家詳細(xì)介紹了Java線程的調(diào)度與優(yōu)先級,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot中API接口參數(shù)獲取方式小結(jié)

    SpringBoot中API接口參數(shù)獲取方式小結(jié)

    在Spring Boot中,API接口參數(shù)可以通過多種方式獲取,具體取決于你定義的API接口參數(shù)類型(如路徑參數(shù)、查詢參數(shù)、請求體參數(shù)、請求頭等),本文給大家就介紹了一些常見的參數(shù)獲取方式,需要的朋友可以參考下
    2024-06-06

最新評論

新绛县| 临汾市| 恩平市| 遵义县| 宁武县| 新兴县| 昌乐县| 曲沃县| 宜城市| 灵丘县| 宜良县| 准格尔旗| 永平县| 廉江市| 花莲县| 会昌县| 楚雄市| 奉新县| 九龙坡区| 古交市| 尚志市| 老河口市| 阿坝| 新巴尔虎右旗| 澄迈县| 阿巴嘎旗| 凤冈县| 吉隆县| 大兴区| 遂昌县| 文化| 伽师县| 原平市| 健康| 静海县| 高清| 清涧县| 兰溪市| 任丘市| 桑日县| 武宣县|