Java 如何向下载的 CSV 添加新的空列
Java How to add new empty column to downloaded CSV
我正在使用 Java OpenCSV 代码从 MYSQL 的一个表中读取数据并将结果集写入 CSV。
现在我的要求是我想在下载的 csv 的 header 中添加新的空列名称作为第一列。
不确定如何以及在何处进行此更改。
示例,附上我想要的。Design
代码:
public void dataFetch(Connection conn,String query) { // query is hardcoded as : select Name,Address from dbo.Employee
ResultSet rs = null;
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
rs = stmt.executeQuery(query);
CSVWriter writer = new CSVWriter(new BufferedWriter(new FileWriter(strSource)));
ResultSetHelperService service = new ResultSetHelperService();
service.setDateTimeFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("**** Started writing Data to CSV **** " + new Date());
writer.setResultService(service);
int lines = writer.writeAll(rs, true, true, false);
writer.flush();
writer.close();
System.out.println("** OpenCSV -Completed writing the resultSet at " + new Date() + " Number of lines written to the file " + lines);
rs.close();
stmt.close();
} catch(Exception e) {
e.printStackTrace();
}
}
一旦进入 dataFetch 函数,您可以 re-construct 查询字符串吗?
在 END 处添加一列(最后一列)
我会将短语 ' FROM '
替换为新的字段定义,以便您的查询字符串如下所示:
select Name,Address,'' AS NewColumnName from dbo.Employee
将“FROM
”替换为“,'' AS NewColumnName FROM
”——这是我的建议。 (我用大写只是为了强调)
在开头添加一列
我会将短语 'SELECT '
替换为新的字段定义,以便您的查询字符串如下所示:
select '' AS NewColumnName,Name,Address from dbo.Employee
将“SELECT
”替换为“SELECT '' AS NewColumnName,
”——这是我的建议。 (我用大写只是为了强调)
然后您实际上已将新列添加到 SQL 输出中,它将传播到您的 CSV 文件中,并为当前创建的所有列添加一个 header。
我正在使用 Java OpenCSV 代码从 MYSQL 的一个表中读取数据并将结果集写入 CSV。
现在我的要求是我想在下载的 csv 的 header 中添加新的空列名称作为第一列。
不确定如何以及在何处进行此更改。
示例,附上我想要的。Design
代码:
public void dataFetch(Connection conn,String query) { // query is hardcoded as : select Name,Address from dbo.Employee
ResultSet rs = null;
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
rs = stmt.executeQuery(query);
CSVWriter writer = new CSVWriter(new BufferedWriter(new FileWriter(strSource)));
ResultSetHelperService service = new ResultSetHelperService();
service.setDateTimeFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("**** Started writing Data to CSV **** " + new Date());
writer.setResultService(service);
int lines = writer.writeAll(rs, true, true, false);
writer.flush();
writer.close();
System.out.println("** OpenCSV -Completed writing the resultSet at " + new Date() + " Number of lines written to the file " + lines);
rs.close();
stmt.close();
} catch(Exception e) {
e.printStackTrace();
}
}
一旦进入 dataFetch 函数,您可以 re-construct 查询字符串吗?
在 END 处添加一列(最后一列)
我会将短语 ' FROM '
替换为新的字段定义,以便您的查询字符串如下所示:
select Name,Address,'' AS NewColumnName from dbo.Employee
将“FROM
”替换为“,'' AS NewColumnName FROM
”——这是我的建议。 (我用大写只是为了强调)
在开头添加一列
我会将短语 'SELECT '
替换为新的字段定义,以便您的查询字符串如下所示:
select '' AS NewColumnName,Name,Address from dbo.Employee
将“SELECT
”替换为“SELECT '' AS NewColumnName,
”——这是我的建议。 (我用大写只是为了强调)
然后您实际上已将新列添加到 SQL 输出中,它将传播到您的 CSV 文件中,并为当前创建的所有列添加一个 header。