MySql 快速插入千万级大数据的方法示例
Java多线程批量导入数据库
在大数据处理中,我们经常需要将大量数据从文件导入到数据库。对于大型CSV文件,使用Java多线程可以大大提高导入速度。本文将展示如何使用Java多线程技术读取大文件并将其内容批量导入数据库。
主类:MuiltThreadImportDB
这个类负责初始化多线程读取和导入流程。它首先创建一个指向CSV文件的BufferedReader对象,并通过多线程将文件内容分批读取并处理。
```java
public class MuiltThreadImportDB {
private static int m_record = 99999; // 设定每批读取的记录数
private static BufferedReader br; // 用于读取文件的BufferedReader对象
private ArrayList
private static int m_thread = 0; // 当前线程数
static {
try {
br = new BufferedReader(new FileReader("E:/tianci/IJCAI15 Data/data_format1/user_log_format1.csv"), 8192);
br.readLine(); // 跳过CSV头部
} catch (FileNotFoundException | IOException e) {
e.printStackTrace();
}
}
public void start() {
String line;
try {
while ((line = br.readLine()) != null) {
synchronized (br) { // 确保文件读取的线程安全
if (list.size() < m_record) { // 如果未达到批量大小,继续添加记录到列表
list.add(line);
} else { // 达到批量大小,启动新线程处理列表中的数据并清空列表
Thread t = new Thread(new MultiThread(list), Integer.toString(m_thread++));
t.start();
list = new ArrayList<>(); // 重置列表用于下一批数据收集
}
}
}
if (!list.isEmpty()) { // 处理最后一批数据(如果有)
Thread t = new Thread(new MultiThread(list), Integer.toString(m_thread++));
t.start();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try { br.close(); } catch (IOException e) { e.printStackTrace(); } // 关闭文件读取器
}
}
public static void main(String[] args) { new MuiltThreadImportDB().start(); } // 启动程序进行导入操作
}
```
多线程处理类:MultiThread implements Runnable
让我们用Cambrian的代码来渲染这篇文章的内容。这是一个强大的工具,它可以帮助我们更好地展示我们的文章,让读者更容易理解和接受我们的观点。在这个数字化的时代,我们需要在信息的海洋中寻找到更有效的表达方式,而Cambrian的渲染方式无疑是一种很好的选择。
编程语言
- MySql 快速插入千万级大数据的方法示例
- thinkphp5redis缓存新增方法实例讲解
- php数组转换js数组操作及json_encode的用法详解
- jQuery使用deferreds串行多个ajax请求
- 跨域请求的完美解决方法(JSONP, CORS)
- JavaScript获取表格(table)当前行的值、删除行、
- PHP实现的观察者模式实例
- jQuery上传插件webupload使用方法
- Bootstrap中data-target 到底是什么
- 2则自己编写的jQuery特效分享
- 详解springmvc 接收json对象的两种方式
- vue resource post请求时遇到的坑
- jQuery版本升级踩坑大全
- JS开发自己的类库实例分析
- Winform客户端向web地址传参接收参数的方法
- jQuery中的siblings()是什么意思(推荐)