snippetjavaMinor
Write data from database to a CSV file
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
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
The
So, where you're currently doing this:
You can instead write it as:
appendThe
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.