小编典典

从文件执行db语句

sql

我将嵌入式Apache derby用于我的应用程序。我有一个名为 createdb.sql
的SQL脚本,该脚本在数据库中创建所有表并使用初始数据填充它,例如:

SET SCHEMA APP;


CREATE TABLE study (
    study_id    bigint  not null GENERATED ALWAYS AS IDENTITY  (START WITH 1, INCREMENT BY 1),
    name        varchar(50) not null,
    note         varchar(1000) DEFAULT '',      
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    deleted boolean DEFAULT false,
    UNIQUE(name),
    CONSTRAINT primary_key PRIMARY KEY (study_id)

);

INSERT INTO "APP"."STUDY" (NAME) VALUES ('default');



CREATE TABLE img (
    img_id bigint not null GENERATED ALWAYS AS IDENTITY  (START WITH 1, INCREMENT BY 1),
    filename varchar(200) not null,
    path        varchar(300) not null,
    flipped boolean DEFAULT false,
    type      smallint not null, 
    note varchar(1000) DEFAULT '',
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (img_id)    
);

ALTER TABLE img ADD COLUMN dpix integer DEFAULT -1;
ALTER TABLE img ADD COLUMN dpiy integer DEFAULT -1;

问题是如何加载该文件并使用Java执行所有语句?我正在尝试其他功能,但它们均无法正常工作。例如,

Statement s = conn.createStatement();
s.execute(sqlStr);

或者

Statement s = conn.createStatement();
s.executeUpdate(sqlStr);

其中 sqlStr 是一个String变量,包含 createdb.sql
文件的内容。如何执行脚本中包含的所有SQL命令,以便创建所有表并对其进行初始化?顺便说一句,SQL脚本可以正常工作,因为我在SQuirreL SQL
Client中使用它来手动创建和初始化数据库。现在,我想在我的应用程序中执行此操作。


阅读 243

收藏
2021-05-23

共1个答案

小编典典

下面的教程给出了如何运行mysql脚本(.sql文件)。您要做的是将mysql db连接更改为derby db并运行。会工作的。

http://www.mkyong.com/jdbc/how-to-run-a-mysql-script-using-
java/

这是不使用任何第三方库即可运行MySQL脚本的另一种方法。

http://coreyhulen.wordpress.com/2010/04/07/run-a-sql-script-for-mysql-using-
java/

2021-05-23