createDB.sql
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`@@@dbName@@@` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `@@@dbName@@@`;
DROP TABLE IF EXISTS `tb_abc`;
CREATE TABLE `tb_abc` (
`id` varchar(36) NOT NULL,
`days` int(11) DEFAULT NULL,
`last_update_user` varchar(50) DEFAULT NULL,
`last_update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySqlSuperDao.java
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class MySqlSuperDao implements ISuperDao {
/**
* 创建数据库(读SQL脚本)
*
* @author HeCheng
*/
@SuppressWarnings("finally")
public boolean createMisDB(String name, String year) throws DbException,
DaoException, SQLException {
Connection conn = null;
Statement stmt = null;
boolean success = false;
// 创建数据库名
String dbName = name + "_" + year;
try {
List<String> sqlList = new ArrayList<String>();
try {
InputStream sqlFileIn = MySqlSuperDao.class
.getResourceAsStream("/MySql/createDB.sql");
// 将SQL脚本产生为list<String>
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead, "utf-8"));
}
String[] sqlArr = sqlSb.toString().split(
"(;\\s*\\r\\n)|(;\\s*\\n)");
// 替换数据库名
int replace = 0;
for (int i = 0; i < sqlArr.length; i++) {
if (replace == 2) {
break;
}
if (sqlArr[i].indexOf("@@@dbName@@@") > -1) {
sqlArr[i] = sqlArr[i].replace("@@@dbName@@@", dbName);
replace++;
}
}
// 将数组转成LIST并且过滤LOCKTABLE 和注释
for (int i = 0; i < sqlArr.length; i++) {
String sql = sqlArr[i].replaceAll("--.*", "").trim();
if (!sql.equals("") && sql.indexOf("LOCK TABLES") != 0
&& sql.indexOf("UNLOCK TABLES") != 0
&& sql.indexOf("/*") != 0) {
sqlList.add(sql);
}
}
} catch (Exception e) {
System.out.println("error");
return false;
}
// 创建数据库链接并执行SQL脚本
conn = this.getConnection();
stmt = null;
conn.setAutoCommit(false);
stmt = conn.createStatement();
for (String sql : sqlList) {
stmt.addBatch(sql);
}
stmt.executeBatch();
success = true;
} catch (Exception e) {
// 如果报错,则删除D
conn = null;
conn = this.getConnection();
stmt = null;
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.execute("drop database " + dbName);
success = false;
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
return success;
}
}
/**
* 获取数据库链接
*
* @author HeCheng
* @time 2011-02-26 10:48:24
* @return
* @throws SQLException
* @throws IOException
* @throws ClassNotFoundException
*/
private Connection getConnection() throws SQLException, IOException,
ClassNotFoundException {
Connection con = null;
Class.forName("com.mysql.jdbc.Driver");
Properties properties = new Properties();
properties.load(MySqlSuperDao.class
.getResourceAsStream("/MySql/DB.properties"));
String url = properties.getProperty("url");
String u = properties.getProperty("u");
String p = properties.getProperty("p");
con = DriverManager.getConnection("jdbc:mysql://" + url + "", u, p);
return con;
}
}
分享到:
相关推荐
"quartz集群各种数据库建表脚本" 提供了在不同类型的数据库中创建Quartz集群所需的表结构。基于quartz2.2.1版本,这个脚本应该包含了创建必要的调度表,如QRTZ_JOB_DETAILS、QRTZ_TRIGGERS、QRTZ_SIMPLE_TRIGGERS等...
2. **数据库建表语句(Table Creation Statement)**: MySQL的建表语句是SQL语言的一部分,用于创建新的数据库表。基本语法包括指定表名、定义列名、数据类型、约束条件等。 3. **自动转换工具**: 为了从Java...
在部署Quartz时,根据选用的数据库(如MySQL、Oracle、SQL Server等),需要将"quartz-数据库建表语句.zip"中的相应SQL脚本运行在数据库上,以创建这些必要的表。这一步是Quartz配置中的关键部分,确保Quartz能够...
例如,如果你使用的是MySQL,你需要找到MySQL的建表脚本,然后在MySQL客户端执行。这将创建必要的表,如`QRTZ_TRIGGERS`, `QRTZ_JOB_DETAILS`, `QRTZ_CALENDARS`等,这些表用于存储触发器、作业详细信息和日历信息。...
首先,"SQLserver数据库建表语句源代码"这部分是关于数据库设计的。在SQL Server中,建表语句用于创建数据库中的表格结构,定义字段、数据类型、主键、外键等关系。这通常涉及到需求分析,理解火车订票系统的业务...
在该实例中,"带建表语句"意味着包含了一组SQL脚本来创建数据库表。在MyBatis中,通常会在Mapper XML文件中定义这些SQL语句,或者在初始化阶段通过编程方式执行。例如: ```sql CREATE TABLE `user` ( `id` INT(11...
这里提到的工具或脚本可以自动从MySQL数据库中读取表结构,然后根据结构生成对应的Java源代码。这个过程涉及到以下步骤: 1. **数据库连接**: 首先,需要配置数据库连接字符串,包括数据库URL、用户名、密码等信息...
4. **tables_mysql_innodb.sql**:MySQL数据库的脚本,考虑到InnoDB存储引擎的安全性和事务支持,它是MySQL的推荐选择。 5. **tables_cubrid.sql**:用于CUBRID数据库,一个高性能、开源的关系型数据库管理系统。 ...
Java实现的一个idea插件,用于实体转Mysql、oracle建表语句和json请求体的工具 使用 1、安装 下载发行版,打开idea:settings->plugins->intall plugin from disk 2、使用 打开实体类,右键选择ToMysql/ToOracle/To...
总之,使用Java和MySQL JDBC驱动进行数据库迁移是一个复杂但可实现的过程,涉及到数据库连接、元数据查询、SQL脚本执行等多个步骤。通过合理的编程和错误处理,可以构建一个可靠的自动化迁移工具。
1. **连接MySQL**:使用Java或Python等编程语言,通过JDBC或其他库连接到MySQL数据库,获取表信息。 2. **解析表结构**:查询MySQL的元数据信息,如字段名、字段类型、字段长度、是否为主键等。 3. **映射数据类型...
在Java环境中,可以利用JDBC(Java Database Connectivity)API编写程序,连接到Sybase数据库,执行相应的SQL查询,并将结果解析成建表语句。 `java`在这里扮演了工具开发的角色,开发者可以利用Java的强类型和丰富...
综上所述,`MysqlToPostgresUtil`是一个实用的工具,它简化了MySQL到PostgreSQL的迁移过程,通过自动转换DDL和创建触发器,确保了迁移后的数据库能够在PostgreSQL环境中正常工作。在使用该工具时,应充分了解其功能...
在本文中,我们将详细介绍 Java 使用 InfluxDB 数据库的详细代码,包括如何在 Maven 项目中引入 InfluxDB 依赖项,编写 InfluxDB 工具类,连接 InfluxDB 数据库,创建保留策略等。 pom.xml 中引入 InfluxDB 依赖项 ...
您只需要在实体类上标记相关注解就能达到创建数据库的操作,指定初始化脚本就能执行数据初始化,内置测试demo。 数据库支持 mysql、达梦 功能介绍 兼容MP 排除字段逻辑(static、transient修饰字段和@TableField...
JSP(JavaServer Pages)是Java平台上的一个服务器端脚本语言,用于创建动态网页。在JSP中,HTML代码和Java代码可以混合编写,使得开发者可以在网页中嵌入Java代码来处理动态内容。JSP通过编译成Servlet运行在服务器...
为了在启动时自动创建表,我们可以创建一个启动命令类,注入MybatisPlus的SqlRunner并执行建表操作: ```java @Component @CommandLineRunner public class CreateTableOnStartup implements CommandLineRunner { @...
在本案例中,我们将深入探讨如何使用Spring Boot与MyBatis Plus结合实现数据库表的自动化创建。Spring Boot简化了Spring应用程序的开发过程,而MyBatis Plus则为MyBatis提供了一个强大的扩展,使得数据库操作更为...
3. **数据库设计**:通过阅读SQL脚本,可以学习到数据库建表、关系设计以及如何为问答系统设计合适的数据结构。 4. **Maven项目管理**:学习如何使用POM.xml文件管理项目依赖,以及Maven的构建生命周期和插件。 5. *...
在【说明.txt】中,可能详细介绍了项目的开发环境配置、数据库建表脚本、程序运行步骤等,帮助用户理解并运行项目。而【Java swing mysql实现的学生选课系统项目源码】则包含了实际的代码文件,通过阅读源码,可以...