maven依赖
<properties>
<java.version>1.8</java.version>
<mysql.version>8.0.21</mysql.version>
<druid.version>1.1.9</druid.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
Main.class
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.mysql.jdbc.Driver;
import java.sql.*;
import java.util.Properties;
import java.util.logging.Logger;
public class Main {
public static void main(String[] args) {
// 驱动程序名
String driver = "com.mysql.cj.jdbc.Driver";
// URL指向要访问的数据库名 test
String url = "jdbc:mysql://192.168.10.1:3306/db_bigdata_saleflow?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "root";
//mysql源
DruidDataSource druidDataSource;
// 遍历查询结果集
try {
//获取mysql-Source源
druidDataSource = new DruidDataSource();
druidDataSource.setUrl(url);
druidDataSource.setUsername(user);
druidDataSource.setPassword(password);
druidDataSource.setDriver(new Driver());
//初始化
druidDataSource.init();
//获取mysql连接
DruidPooledConnection connection = druidDataSource.getConnection(50000L);
PreparedStatement preparedStatement = connection.prepareStatement("select * from t_saleflow");
//也可以修改jdbc url通过defaultFetchSize参数来设置,这样默认所以的返回结果都是通过流方式读取.
preparedStatement.setFetchSize(Integer.MIN_VALUE);
ResultSet resultSet = preparedStatement.executeQuery();
//获取doris连接
Connection dorisConn = DorisJDBCUtils.getconnection();
String dorisInsert = "INSERT INTO t_saleflow_realtime" +
"(id, batch_date, companycode)" +
"VALUES(?,?,?)";
PreparedStatement stmt = dorisConn.prepareStatement(dorisInsert);
while (resultSet.next()){
//简单的打印
System.out.println(resultSet.getString(1));
stmt.setString(1, resultSet.getString(1));
stmt.setDate(2, resultSet.getDate(2));
stmt.setString(3,resultSet.getString(3));
stmt.addBatch();
stmt.executeBatch();
}
DorisJDBCUtils.release(null, stmt, dorisConn);
//完成之后关闭相关连接
connection.close();
druidDataSource.close();
}
catch (SQLException e) {
// 数据库连接失败异常处理
e.printStackTrace();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
DorisJDBCUtils.class
//doris连接工具
import java.sql.*;
public class DorisJDBCUtils {
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL_PATTERN = "jdbc:mysql://%s:%d/%s?rewriteBatchedStatements=true";
private static final String HOST = "192.168.10.12"; // Leader Node host
private static final int PORT = 9030; // http port of Leader Node
private static final String DB = "db_bigdata";
private static final String TBL = "t_saleflow_realtime";
private static final String USER = "root";
private static final String PASSWD = "root";
private static final int INSERT_BATCH_SIZE = 10000;
Connection conn = null;
PreparedStatement stmt = null;
//加载驱动
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接(自己决定,封装到方法中)
//static静态,直接使用类名.方法名更方便
public static Connection getconnection() throws Exception{
String url=String.format(DB_URL_PATTERN, HOST, PORT, DB);
String user="historyOrder";
String password="historyOrder";
Connection conn=DriverManager.getConnection(url,user,password);
return conn;
}
//释放资源
public static void release(ResultSet rs,PreparedStatement stmt,Connection conn) throws Exception{
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}