package org.kodejava.jdbc;
import java.io.File;
import java.io.FileWriter;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.sql.*;
public class ClobReadDemo {
private static final String URL = "jdbc:mysql://localhost/kodejava";
private static final String USERNAME = "kodejava";
private static final String PASSWORD = "s3cr*t";
public static void main(String[] args) {
try (Connection conn =
DriverManager.getConnection(URL, USERNAME, PASSWORD)) {
String sql = "SELECT book_id, data FROM book_excerpt";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
long bookId = resultSet.getLong("book_id");
// Get the character stream of our CLOB file
Reader reader = resultSet.getCharacterStream("data");
File file = new File(bookId + ".txt");
try (FileWriter writer = new FileWriter(file, StandardCharsets.UTF_8)) {
char[] buffer = new char[1];
while (reader.read(buffer) > 0) {
writer.write(buffer);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
The structure of book_excerpt
table.
CREATE TABLE `book_excerpt`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`book_id` bigint(20) unsigned NOT NULL,
`description` varchar(255) NOT NULL,
`data` longtext,
PRIMARY KEY (`id`),
CONSTRAINT `book_excerpt_ibfk_1` FOREIGN KEY (`book_id`) REFERENCES `book` (`id`)
) ENGINE = InnoDB;
Maven Dependencies
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
Latest posts by Wayan (see all)
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024
Worked like magic.. Thank you for this great code snippet. Keep posting such nice stuff and keep empowering the community.