HiveBrain v1.2.0
Get Started
← Back to all entries
snippetjavaMinor

Write data from database to a CSV file

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
filecsvwritedatabasefromdata

Problem

I have a database containing a high amount of data. I want my app to filter and select only some of it, and save it into a CSV file or JSON.

For the moment I have this method which takes the data from the database and puts it in a CSV:

```
void viewAllCounters (String tableName, long startDate, long endDate, Connection c) throws SQLException {
Statement stmt = null;
String query = "SELECT receivedtime, source, numulethbytesinter, numdlethbytesinter, numulethbytessent, numdlethbytessent, "
+ "numuniquegtpteids, numulbytessenttoaccl, numdlbytessenttoaccl "
+ " FROM " + tableName + " WHERE CAST(receivedtime AS integer) BETWEEN "+ startDate +" AND " + endDate +" ORDER BY receivedtime;";

try {
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(query);
int i = 0;
double last = 0;
DecimalFormat decFor = new DecimalFormat("0.000");
SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT);

try {
File file = new File("KPI-"+tableName+"-"+ endDate +".csv");
FileWriter fileWriter = new FileWriter(file);
fileWriter.append("Date");
fileWriter.append(',');
fileWriter.append("Source");
fileWriter.append(',');
fileWriter.append("AUIDR");
fileWriter.append(',');
fileWriter.append("ADIDR");
fileWriter.append(',');
fileWriter.append("AUEDR");
fileWriter.append(',');
fileWriter.append("ADEDR");
fileWriter.append(',');
fileWriter.append("AUTPG");
fileWriter.append(',');
fileWriter.append("ADTPG");
fileWriter.append(',');
fileWriter.append("AST");
fileWriter.append('\n');

while (rs.next()) {
if (last != 0){
String receivedtime = rs.getString("receivedtime");
String source = r

Solution

On the append

The append method returns the writer, so one improvement could be to leverage this and chain the calls together.

So, where you're currently doing this:

fileWriter.append("Date");
fileWriter.append(',');
fileWriter.append("Source");
fileWriter.append(',');
fileWriter.append("AUIDR");
fileWriter.append(',');
fileWriter.append("ADIDR");
fileWriter.append(',');
fileWriter.append("AUEDR");
fileWriter.append(',');
fileWriter.append("ADEDR");
fileWriter.append(',');
fileWriter.append("AUTPG");
fileWriter.append(',');
fileWriter.append("ADTPG");
fileWriter.append(',');
fileWriter.append("AST");
fileWriter.append('\n');


You can instead write it as:

fileWriter
  .append("Date")
  .append(',')
  .append("Source")
  .append(',')
  .append("AUIDR")
  .append(',')
  .append("ADIDR")
  .append(',')
  .append("AUEDR")
  .append(',')
  .append("ADEDR")
  .append(',')
  .append("AUTPG")
  .append(',')
  .append("ADTPG")
  .append(',')
  .append("AST")
.append('\n');

Code Snippets

fileWriter.append("Date");
fileWriter.append(',');
fileWriter.append("Source");
fileWriter.append(',');
fileWriter.append("AUIDR");
fileWriter.append(',');
fileWriter.append("ADIDR");
fileWriter.append(',');
fileWriter.append("AUEDR");
fileWriter.append(',');
fileWriter.append("ADEDR");
fileWriter.append(',');
fileWriter.append("AUTPG");
fileWriter.append(',');
fileWriter.append("ADTPG");
fileWriter.append(',');
fileWriter.append("AST");
fileWriter.append('\n');
fileWriter
  .append("Date")
  .append(',')
  .append("Source")
  .append(',')
  .append("AUIDR")
  .append(',')
  .append("ADIDR")
  .append(',')
  .append("AUEDR")
  .append(',')
  .append("ADEDR")
  .append(',')
  .append("AUTPG")
  .append(',')
  .append("ADTPG")
  .append(',')
  .append("AST")
.append('\n');

Context

StackExchange Code Review Q#118539, answer score: 3

Revisions (0)

No revisions yet.