java串行和并行两种方式实现读取mysql数据到文本文档
时间: 2024-02-22 20:59:18 浏览: 19
可以使用Java中的JDBC API连接MySQL数据库,然后使用串行和并行两种方式读取数据并将其写入文本文档。
1. 串行方式读取MySQL数据并写入文本文档
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
public class SerialReadDataToText {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String sql = "SELECT * FROM table_name";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
BufferedWriter writer = new BufferedWriter(new FileWriter("data.txt"));
while (rs.next()) {
String data = rs.getString("column_name");
writer.write(data);
writer.newLine();
}
writer.close();
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}
```
2. 并行方式读取MySQL数据并写入文本文档
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class ParallelReadDataToText {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String sql = "SELECT * FROM table_name";
ExecutorService executorService = Executors.newFixedThreadPool(4);
List<Future<String>> futures = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
String data = rs.getString("column_name");
Callable<String> task = () -> data;
futures.add(executorService.submit(task));
}
BufferedWriter writer = new BufferedWriter(new FileWriter("data.txt"));
for (Future<String> future : futures) {
String data = future.get();
writer.write(data);
writer.newLine();
}
writer.close();
} catch (SQLException | IOException | InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executorService.shutdown();
}
}
}
```
以上代码仅供参考,实际应用中需要根据具体情况进行修改。