如何使用JDBC运行.SQL脚本?

数据库脚本文件是包含多个彼此分离的SQL查询的文件。通常,这些文件具有.sql扩展名。

在Java中运行.sql脚本文件

您可以使用Apache iBatisScriptRunner类的runScript()方法在Java中执行.sql脚本文件。对于此方法,您需要传递一个连接对象。

因此,要运行脚本文件-

  • 使用DriverManager类的registerDriver()方法注册MySQL JDBC驱动程序。

  • 使用getConnection()方法创建一个连接对象以与MySQL数据库建立连接。

  • 初始化软件包org.apache.ibatis.jdbc的ScriptRunner类。

  • 创建一个Reader对象以读取脚本文件。

  • 最后,使用runScript(reader)方法执行脚本。

示例

让我们创建一个名称为sampleScript.sql的脚本文件,复制以下内容init。该脚本在MySQL数据库中创建一个名为cricketers_data的表,并用五条记录填充该表。

CREATE DATABASE exampleDB;
use exampleDB;
CREATE TABLE exampleDB.cricketers_data(
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
select * from mydatabase.cricketers_data;

将以下maven依赖项(对于jar文件mybatis-3.4.1.jar)添加到pom.xml文件中-

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.4.5</version>
</dependency>

示例

以下JDBC程序执行sampleScript.sql文件。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.ibatis.jdbc.ScriptRunner;
public class RunningScripts {
   public static void main(String args[]) throws Exception {
      //注册驱动程序
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //获得连接
      String mysqlUrl = "jdbc:mysql://localhost/talakai_noppi";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //初始化脚本运行器
      ScriptRunner sr = new ScriptRunner(con);
      //创建阅读器对象
      Reader reader = new BufferedReader(new FileReader("E:\\sampleScript.sql"));
      //运行脚本
      sr.runScript(reader);
   }
}

输出结果

Connection established......
CREATE DATABASE exampleDB
use exampleDB
CREATE TABLE exampleDB.cricketers_data(
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
)
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India')
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica')
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka')
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India')
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India')
select * from mydatabase.cricketers_data
First_Name Last_Name Year_Of_Birth Place_Of_Birth Country
Shikhar Dhawan 1981-12-05 Delhi India
Jonathan Trott 1981-04-22 CapeTown SouthAfrica
Lumara Sangakkara 1977-10-27 Matale Srilanka
Virat Kohli 1988-11-05 Delhi India
Rohit Sharma 1987-04-30 Nagpur India