- Oracle
table nama: EXPORT_DATE
columns: FILE_NAME NVARCHAR(20 CHAR),
EXPORT_DATE NVARCHAR(20 CHAR),
FILE_CONTENT CLOB
- JAVA
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExportTools {
private static String dateFormat = "yyyyMMdd";
private static ResultSet resultSet = null;
private static Connection conn = null;
private static PreparedStatement pre = null;
private static String dbUserName = "DBname";
private static String dbPassWord = "DBPwd";
private static String dbUrl = "jdbc:oracle:thin:@//DBurl";
public static void main(String[] args){
try{
String exportFolder = "D:/Data";
exportFiles(exportFolder);
} catch(Exception ex){
ex.printStackTrace();
}
}
public void exportFiles(String exportFolder){
try{
File exportDirectory = new File(exportFolder);
if(!exportDirectory.exists()){
return;
}
getAndExportFileContent(exportFolder);
}catch(Exception ex){
ex.printStackTrace();
}
}
private void getAndExportFileContent(String exportFolder){
try{
conn = openOrclConnection();
String sqlStr =
"SELECT EXPORT_DATE, FILE_NAME, FILE_CONTENT FROM CONTENT_TABLE WHERE EXPORT_DATE LIKE ?";
pre = conn.prepareStatement(sqlStr);
Stirng condition = getCurrentDate();
pre.setString(1,condition + "%");
resultSet = pre.executeQuery();
while(resultSet.next()){
String fileName = resultSet.getString("FILE_NAME");
java.sql.Clob clob = resultSet.getClob("FILE_CONTENT");
exportToFile(exportFolder, fileName, clob);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
closeOrclConnection();
}
}
/**
* Export content to file.
*
* @param exportFolder export folder
* @param fileName save as file name
* @param contentClob file content, oracle Clob content
*/
private void exportToFile(String exportFolder, String fileName, Clob contentClob){
try{
String exportFilePath = exportFolder + "/" + fileName;
File exportFile = new File(exportFilePath);
if(!exportFile.exists()){
exportFile.createNewFile();
}
FileWriter fileWriter = new FileWriter(exportFile);
BufferedWriter bufferWriter = new BufferedWriter(fileWriter);
try{
Reader reader = contentClob.getCharacterStream();
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
while (str != null){
bufferWriter.write(str);
bufferWriter.newLine();
str = br.readLine();
}
} catch(Exception ex){
ex.printStackTrace();
}
bufferWriter.close();
} catch(Exception ex){
ex.printStackTrace();
}
}
/**
* Get current date
*
* @return current date: yyyyMMdd
*/
private String getCurrentDate(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
return simpleDateFormat.format(new Date());
}
/**
* Open oracle connection.
*/
private Connection openOrclConnection(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassWord);
} catch(Exception ex){
ex.printStackTrace();
}
}
/**
* Close oracle connection.
*/
private void closeOrclConnection(){
try{
if(resultSet != null){
resultSet.close();
}
if(pre != null){
pre.close();
}
if(conn != null){
conn.close();
}
} catch(Exception ex){
}
}
}