1、背景
在实际工作中经常会遇到为了一个小问题或者功能需要自己搭建测试环境,从测试应用中插入数据到数据库,大多数情况下客户会给出表结构以及csv数据,这时我们需要自己写java代码把数据插入到自己本地库去验证功能。
2、工具
java编辑工具:intellij idea社区版,可以从官网下载。
数据库:达梦
3、IJ使用步骤
在使用前需要加载数据库驱动、安装java、以及javacsv包。
打开项目结构加载所需要的包
下面就可以新建一个项目写代码了。
4、demo
1)、数据库建表结构
CREATE TABLE "TEST"."TEST5"
(
"SMID" INT NOT NULL,
"SMX" FLOAT DEFAULT 0.,
"SMY" FLOAT DEFAULT 0.,
"SMLIBTILEID" INT DEFAULT 1,
"SMUSERID" INT DEFAULT 0 NOT NULL,
"SBBM" VARCHAR2(510),
"NAME_CHN" VARCHAR2(512),
"JKDWLX" INT,
"MACDZ" VARCHAR2(510),
"IP" VARCHAR2(510),
"SXJGNLX" VARCHAR2(510),
"JD" DOUBLE,
"WD" DOUBLE,
"SXJCJQY" VARCHAR2(510),
"SBZT" VARCHAR2(510),
"XZQY" VARCHAR2(510),
"DWSC" VARCHAR2(510),
"SXJLX" VARCHAR2(510),
"AZDZ" VARCHAR2(510),
"LWSX" VARCHAR2(510),
"SSXQGAJG" VARCHAR2(510),
"JSGD" VARCHAR2(510),
"GLDW" VARCHAR2(510),
"GLDWLXFS" VARCHAR2(510),
"LXBCTS" VARCHAR2(510),
"SSBMHY" VARCHAR2(510),
"SBCS" VARCHAR2(510),
NOT CLUSTER PRIMARY KEY("SMID")) STORAGE(ON "TEST", CLUSTERBTR) ;
CREATE INDEX "Sm_idx_SmID_5" ON "TEST"."TEST5"("SMID" ASC) STORAGE(ON "TEST", CLUSTERBTR) ;
2)新建存储数据库用户密码的属性文件sql.properties
driver=dm.jdbc.driver.DmDriver
url=jdbc:dm://192.168.76.129:5236
user=TEST
password=test_2023
3)新建连接数据库的java文件JDBCUtils.java
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static Connection conn = null;
// 静态代码块
static{
/* 将外部properties文件放在src文件夹中,用类的加载器读文件,格式:
* 当前类名.class.getClassLoader().getResourceAsStream("外部文件名");*/
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("sql.properties");
Properties p=new Properties();
try {
p.load(in);
} catch (IOException e) {
e.printStackTrace();
}
// 读文件给变量赋值
String driver = p.getProperty("driver");
url = p.getProperty("url");
user = p.getProperty("user");
password = p.getProperty("password");
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}// 构造获得数据库链接方法
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 构造关闭流的方法
public static void close(Connection conn,Statement stat) {
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 重载关闭流的方法
public static void close(Connection conn,Statement stat, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
4)建一个测试java代码ssc.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.csvreader.CsvReader;
public class ssc {
public static void main(String[] args) throws IOException,SQLException {
Connection conn=JDBCUtils.getConnection();
String path="C:\Users\Administrator\Desktop\test\test.csv";
CsvReader reader=new CsvReader(path,',', Charset.forName("gbk"));
String name=new BufferedReader(new FileReader(path)).readLine();
PreparedStatement statement;
//name就是表格列的名称
reader.readHeaders();
int len=reader.getHeaders().length;
//len表示的是有几个列
conn.setAutoCommit(false);
while(reader.readRecord()) { //整个while就是为了组装成为插入语句的形式
StringBuilder tmp = new StringBuilder("insert into TEST5("+ name + ") values("+reader.get(0));
for (int i = 1; i <= len - 1; i++) {
tmp.append(",").append(reader.get(i));
}
tmp.append(");");
statement=conn.prepareStatement(tmp.toString());
statement.addBatch();
//System.out.println(tmp.toString());;
statement.executeBatch();
}
conn.commit();
reader.close();
conn.close();
}
}
5、测试数据无法上传附件,测试可以根据需要创造。
文章
阅读量
获赞