Exporting of Database records to csv can be done using:
1. OpenCSV CSVWriter
2. FileWriter
1. OpenCSV CSVWriter
@Inject
private Environment environment;
@Inject @Named("proddataSource") DataSource dataSource;
private FileWriter writer;
@Override
public ResultSet getDWRecords(String queryName) {
try {
java.sql.PreparedStatement ps = dataSource.getConnection().prepareStatement(environment.getProperty(queryName));
ps.setMaxRows(10000);
ResultSet rs = ps.executeQuery();
return rs;
} catch (SQLException e) {
logger.error("CreateCSVDWDumpFileImpl.getDWRecords(): " + e.getMessage());
}
return null;
}
@Override
public void createCSVDumpFromQuery(ResultSet resultSet, String[] salesforceColumnNames, String fileName) {
if (resultSet!=null){
try {
CSVWriter writer = new CSVWriter(new FileWriter(fileName), ',', CSVWriter.NO_QUOTE_CHARACTER);
writer.writeNext(salesforceColumnNames);
writer.writeAll(resultSet, false);
writer.close();
} catch (IOException e) {
logger.error("CreateCSVDWDumpFileImpl.createCSVDumpFromQuery(): " + e.getMessage());
} catch (SQLException e) {
logger.error("CreateCSVDWDumpFileImpl.createCSVDumpFromQuery(): " + e.getMessage());
}
}
}
2. FileWriter
private FileWriter writer;
public void writeToCSVFileAccount(Collection<SObject> sObjects, String[] salesforceColumnNames, String fileName) {
try {
writer = new FileWriter(fileName);
for (int firstCol = 0; firstCol < salesforceColumnNames.length; firstCol++){
writer.append(salesforceColumnNames[firstCol]);
if (firstCol < salesforceColumnNames.length-1)
writer.append(',');
}
writer.append('\n');
for (SObject sAccount : sObjects){
for (int k = 0; k < salesforceColumnNames.length; k++){
writer.append(sAccount.getField(salesforceColumnNames[k])!=null ? salesforceColumnNames[k].contains("Date") || salesforceColumnNames[k].contains("date") ? String.format("%1$tF", sAccount.getField(salesforceColumnNames[k])) : sAccount.getField(salesforceColumnNames[k]).toString() : "");
if (k < salesforceColumnNames.length-1)
writer.append(',');
}
writer.append('\n');
}
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}