Use H2
instead of OpenCSV
.
Strip out your header line and put it in a file called DATA.CSV
1436136640477044,wsn430-8,NA:b27b,Packet recevied from,RX: b0b4, Hello #33
1436136640477257,wsn430-8,NA:b27b,Packet recevied from,RX: b986, Hello #33
1436136640477415,wsn430-8,NA:b27b,Packet recevied from,RX: bc2d, Hello #33
1436136640477566,wsn430-8,NA:b27b,Packet recevied from,RX: b36b, Hello #34
1436136640477716,wsn430-8,NA:b27b,Packet recevied from,RX: bcb6, Hello #35
1436136640477995,wsn430-9,NA:bc2d,Packet recevied from,RX: 1f9e, Hello #33
1436136640478162,wsn430-9,NA:bc2d,Packet recevied from,RX: be29, Hello #33
1436136640478313,wsn430-9,NA:bc2d,Packet recevied from,RX: b61a, Hello #32
1436136640478462,wsn430-9,NA:bc2d,Packet recevied from,RX: c735, Hello #32
1436136640478612,wsn430-9,NA:bc2d,Packet recevied from,RX: bb0a, Hello #32
1436136640478760,wsn430-9,NA:bc2d,Packet recevied from,RX: b6bc, Hello #33
1436136640477044,wsn430-8,NA:b27b,Packet recevied from,RX: b0b1, Hello #42
1436136640477257,wsn430-8,NA:b27b,Packet recevied from,RX: b984, Hello #44
Go download h2 jar file from here:
http://www.h2database.com/html/download.html
And then run this code ...
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class CSVLoader {
public static final String getApplicationPath(Class<?> mainClass) throws URISyntaxException {
return getApplicationDirectory(mainClass).getAbsolutePath();
}
public CSVLoader() {
executeStatement(getDropTableStatement(), false);
executeStatement(getCreateTableStatement(), false);
executeStatement(getInsertStatement(), false);
executeStatement(getSelectStatement(), true);
}
public static final String getDropTableStatement() {
String SQLString = "DROP TABLE DATA IF EXISTS;\n";
return SQLString;
}
public static final String getSelectStatement() {
String SQLString = "SELECT NOEUDADRESS, COUNT(NOEUDSRECE) FROM DATA GROUP BY NOEUDADRESS;\n";
return SQLString;
}
public static final String getCreateTableStatement() {
String SQLString = "CREATE TABLE DATA(\n";
SQLString += " NUMERO VARCHAR(100),\n";
SQLString += " NUMEROWSN VARCHAR(100),\n";
SQLString += " NOEUDADRESS VARCHAR(100),\n";
SQLString += " PACKETRECE VARCHAR(100),\n";
SQLString += " NOEUDSRECE VARCHAR(100),\n";
SQLString += " HELLO VARCHAR(100))";
return SQLString;
}
public static final String getInsertStatement() {
return "INSERT INTO DATA SELECT * FROM CSVREAD('DATA.CSV')";
}
public void executeStatement(String sql, boolean withResultSet) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
File file = getApplicationDirectory(CSVLoader.class);
Class.forName("org.h2.Driver");
connection = DriverManager.getConnection("jdbc:h2:" + file.getAbsolutePath() + File.separator + "storage", "sa", "secret");
statement = connection.createStatement();
if(withResultSet) {
resultSet = statement.executeQuery(sql);
while(resultSet.next()) {
System.out.println("-->" + resultSet.getString(1) + "\t" + resultSet.getString(2));
}
}
else {
statement.execute(sql);
}
}
catch (URISyntaxException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
try {
if(resultSet != null) {
resultSet.close();
}
if(statement != null) {
statement.close();
}
if(connection != null) {
connection.close();
}
}
catch (SQLException e) {
e.printStackTrace();
statement = null;
connection = null;
}
}
}
private static final File getApplicationDirectory(Class<?> mainClass) throws URISyntaxException {
URL url = mainClass.getProtectionDomain().getCodeSource().getLocation();
File file = new File(url.toURI());
return file.getParentFile();
}
public static void main(String[] args) {
new CSVLoader();
}
}
Output is
-->NA:b27b 7
-->NA:bc2d 6
You can also run it from console: The example above also works when you enter this in console:
CREATE TABLE TEST(
NUMERO VARCHAR(100),
NUMEROWSN VARCHAR(100),
NOEUDADRESS VARCHAR(100),
PACKETRECE VARCHAR(100),
NOEUDSRECE VARCHAR(100),
HELLO VARCHAR(100)
) AS SELECT * FROM CSVREAD('C:\\ECLIPSE\\WORKSPACE\\H2\\DATA.CSV')

Make sure to use full path to your data file